0

I want to display the dashboards which are under the group of logged in user, and I already have logged in user information and group-name of that user so far my views.py is

def custom_login(request):
    if request.user.is_authenticated():
        return HttpResponseRedirect('dashboards')        
    return login(request, 'login.html', authentication_form=LoginForm)

def custom_logout(request):
    return logout(request, next_page='/')

def user(request):
    context = {'user': request.user, 'groups': request.user.groups.all()}
    return render_to_response('registration/dashboards.html', context, context_instance=RequestContext(request))

dashboard.html is like

{% extends "base.html" %}
{% block content %}
{% if user.is_authenticated %}
    <p>Welcome, {{ request.user.get_username }}. <br/>
    {% else %}
    <p>Welcome, new user. Please log in.</p>
{% endif %}
<ul>
{% for group in groups %}
    <li>
       and you belongs to <strong>{{ group.name }}<strong> -
                {% endfor %}
      </li>
</ul>
{% endblock %}

forms.py looks like

from django import forms
from django.contrib.auth.models import User
from django.forms import ModelForm
#from mhawk.models import Dashboard


class LoginForm(forms.Form):
        username        = forms.CharField(label=(u'User Name'))
        password        = forms.CharField(label=(u'Password'), widget=forms.PasswordInput(render_value=False))
  

and my models.py is

from django.db import models
from django.contrib.auth.models import Group, User
from django.utils import timezone
import datetime

class Dashboard(models.Model):
    d_name = models.CharField(max_length=200)
    d_description = models.CharField(max_length=200)
    d_url = models.CharField(max_length=200)
    d_status = models.CharField(max_length=200)
    owner = models.ForeignKey(Group)
    
    def __str__(self):return self.d_name

and urls.py is

from django.conf.urls import patterns, include, url
from django.contrib import admin
from drinker import views, models
from django.contrib.auth.models import User

urlpatterns = patterns('',
    
    url(r'^admin/', include(admin.site.urls)),
    url(r'^login/$', 'django.contrib.auth.views.login',),
    url(r'^logout/$', 'django.contrib.auth.views.logout'),
    url(r'^dashboards/$', 'mhawk.views.user'),
)

as I am able to display the logged in username, in the same way I want to display his group and the dashboards which are under that group, thank you. Looking forward for help.

jay j
  • 285
  • 1
  • 6
  • 16

1 Answers1

0

Can you not just do something like this:

def user(request):
    user_groups = request.user.groups.all()
    if request.user.is_anonymous():
        user_groups = []
    user_dashboards = Dashboard.objects.filter(owner__in=user_groups)

    context = {
        'user': request.user,
        'user_groups': user_groups,
        'user_dashboards': user_dashboards,
    }

    [...]

In your template, you need to do something like this...

{% extends "base.html" %}
{% block content %}
    {% if user.is_authenticated %}
        <p>Welcome, {{ request.user.get_username }}. <br/>
    {% else %}
        <p>Welcome, new user. Please log in.</p>
    {% endif %}

    <p></p>
    <p>And you belongs to: </p>
    <ul>
        {% for group in user_groups %}
            <li>
                <strong>{{ group.name }}<strong> -
            </li>
        {% endfor %}
    </ul>
{% endblock %}

Learn more about Django templating:

https://docs.djangoproject.com/en/1.7/ref/templates/builtins/#for

mishbah
  • 5,487
  • 5
  • 25
  • 35