Re: Limit view to group members: what function for the @user_passes_test decorator?

2006-08-29 Thread cyberco

Great! Thanks for the excellent reply.


--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/django-users
-~--~~~~--~~--~--~---



Re: Limit view to group members: what function for the @user_passes_test decorator?

2006-08-27 Thread Gary Wilson

cyberco wrote:
> I want to limit a view to certain group members, so I'm using the
> following decorator:
>
> @user_passes_test(lambda u: Group.objects.get(name='admin') in
> u.groups.all(), login_url='/accounts/login/')
>
> This seems a little verbose. Is there a better way?

user_passes_test is really a decorator generator.  Every time you call
it, it returns a decorator.  If you take a look in
django/contrib/auth/decorators.py [1], you can see how it is used to
create the login_required decorator.  You want to do something similar,
something like:

admin_required = user_passes_test(lambda u:
Group.objects.get(name='admin') in u.groups.all(),
login_url='/accounts/login/')

Which could be rewritten better as:

admin_required = user_passes_test(lambda u:
u.groups.filter(name='admin').count(), login_url='/accounts/login/')

Then in your views you would have something like:
@admin_required
def myview(request):


[1]
http://code.djangoproject.com/browser/django/trunk/django/contrib/auth/decorators.py


--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/django-users
-~--~~~~--~~--~--~---