Hello,

I wanted to ask for some advice on a little issue I have with 
implementing decorators in my views.

I have this piece of code, which I include in each view, to redirect 
anonymous and staff users to a notice page (I don't want them to access 
site members stuff):


def my_view(request):
        if not request.user.is_authenticated():
                return HttpResponseRedirect(MYSTUFF_FORBIDDEN_URL)
        if request.user.is_staff:
                return HttpResponseRedirect(MYSTUFF_STAFF_URL)

        # view logic and HttpResponse


I wanted how to implement a custom site decorator, based on this blog post:
http://siddhi.blogspot.com/2006/12/using-python-decorators-to-implement.html


Here's what I wrote:


from django.http import HttpResponseRedirect

def redirect_anonymous(fn):
     def _check(request, *args, **kwargs):
         try:
             user = request.user.is_authenticated()
         except KeyError:
             return HttpResponseRedirect('/my-stuff/forbidden/')
         return fn(args, kwargs)
     return _check


def redirect_staff(fn):
     def _check(request, *args, **kwargs):
         if request.user.is_staff:
             return HttpResponseRedirect('/my-stuff/staff/')
         return fn(args, kwargs) # here's where I receive error
     return _check



However when I modify my view function to add these checks as decorators:

@redirect_staff
@redirect_anonymous
def my_view(request):
        #view logic and HttpResponse


and I log in to my site as a normal user, I receive an AttributeError 
stating that:

'tuple' object has no attribute 'user'


How should I go about creating my decorators? Is there something I'm 
doing wrong?

Patrick


--~--~---------~--~----~------------~-------~--~----~
 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?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to