On Tuesday, July 17, 2012 8:00:39 AM UTC+2, sandy wrote:
I want to have different views for my application for different types
of users. For this I have this code for my views.py file :
def index1(request):
u = User.objects.all()
This has been solved.
if u.is_staff ==1 and u.is_active == 1 and u.is_superuser == 1:
User.is_staff, User.is_active and User.is_superuser already have a boolean value, so you don't need to test against 1 (or True etc).
if u.is_staff and u.is_active and u.is_superuser :
return render_to_response('tcc11_12/index1.html',
context_instance=RequestContext(request))
elif u.is_staff == 1 and u.is_active == 1 and u.is_superuser == 0:
You only have one different predicate here, so you could factor your tests:
if u.is_staff and u.is_active:
if u.is_superuser :
return render_to_response('tcc11_12/index1.html',
context_instance=RequestContext(request))
else:
return render_to_response('tcc11_12/index2.html',
context_instance=RequestContext(request))
else:
return render_to_response('index3.html',context_instance=RequestContext(request))
Note that if only the template change, you could avoid multiple returns too:
template = 'index3.html' # default
if u.is_staff and u.is_active:
template = 'tcc11_12/index1.html' if u.is_superuser else
'tcc11_12/index2.html'
return render_to_response(template,context_instance=RequestContext(request))
Also, if you're using request.user as the user *and the default authentication backend and auth form*, only "active" users should be able to log in, so your test on 'is_active' _may_ (or not !) be just useless:
https://docs.djangoproject.com/en/1.3/topics/auth/#django.contrib.auth.models.User.is_activeHTH