Thank you!

Sincerely yours,

Joel G Mathew


On Wed, 31 Oct 2018 at 21:36, Stephen J. Butler
<[email protected]> wrote:
>
> @login_required needs "request" as the first parameter.
>
> On Wed, Oct 31, 2018 at 11:58 AM Joel Mathew <[email protected]> wrote:
>>
>> I have a custom function to check if a user is authorized to do
>> certain functions:
>>
>> @login_required
>> def checkpermission(request, permiss):
>>     username = request.user.username
>>     print(f"username is {username}")
>>     print(f"User.objects.filter() is {User.objects.filter()}")
>>     userobj = User.objects.get(username=username)
>>     print(dir(userobj))
>>     print(userobj.user_permissions.all())
>>     print(Permission.objects.filter(group__user=userobj))
>>     perms = getpermissions(userobj)
>>     for perm in perms:
>>         p = perm.name.lower().replace(" ", "_")
>>         if permiss == p:
>>             print("Has permission: %s" % p)
>>             return True
>>     print("No")
>>     return False
>>
>> def getpermissions(userobj):
>>     if userobj.is_superuser:
>>         return Permission.objects.all()
>>     return userobj.user_permissions.all() |
>> Permission.objects.filter(group__user=userobj)
>>
>> The problem arises if I write the previous function with decorator:
>>
>> @login_required
>> def getpermissions(userobj):
>>     if userobj.is_superuser:
>>         return Permission.objects.all()
>>     return userobj.user_permissions.all() |
>> Permission.objects.filter(group__user=userobj)
>>
>> In this case, I get the error:
>>
>> 2018-10-31 21:26:51,239 django.request ERROR    Internal Server Error:
>> /clinic/joelent/doctors
>> Traceback (most recent call last):
>>   File 
>> "/home/joel/.local/lib/python3.6/site-packages/django/core/handlers/exception.py",
>> line 34, in inner
>>     response = get_response(request)
>>   File 
>> "/home/joel/.local/lib/python3.6/site-packages/django/core/handlers/base.py",
>> line 126, in _get_response
>>     response = self.process_exception_by_middleware(e, request)
>>   File 
>> "/home/joel/.local/lib/python3.6/site-packages/django/core/handlers/base.py",
>> line 124, in _get_response
>>     response = wrapped_callback(request, *callback_args, **callback_kwargs)
>>   File 
>> "/home/joel/.local/lib/python3.6/site-packages/django/contrib/auth/decorators.py",
>> line 21, in _wrapped_view
>>     return view_func(request, *args, **kwargs)
>>   File "/home/joel/myappointments/clinic/views.py", line 2797, in
>> clinicdoctorlist
>>     if checkpermission(request, "can_change_doctor") and
>> HasMembership(request, cliniclabel):
>>   File 
>> "/home/joel/.local/lib/python3.6/site-packages/django/contrib/auth/decorators.py",
>> line 21, in _wrapped_view
>>     return view_func(request, *args, **kwargs)
>>   File "/home/joel/myappointments/clinic/views.py", line 2970, in
>> checkpermission
>>     perms = getpermissions(userobj)
>>   File 
>> "/home/joel/.local/lib/python3.6/site-packages/django/contrib/auth/decorators.py",
>> line 20, in _wrapped_view
>>     if test_func(request.user):
>> AttributeError: 'User' object has no attribute 'user'
>>
>> Why would this be happening?
>>
>> Sincerely yours,
>>
>> Joel G Mathew
>>
>> --
>> You received this message because you are subscribed to the Google Groups 
>> "Django users" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected].
>> To post to this group, send email to [email protected].
>> Visit this group at https://groups.google.com/group/django-users.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/django-users/CAA%3Diw_94fELQWM873_y6w%2B0S8vCA2xtO44sG45dqMp4DSC8qeQ%40mail.gmail.com.
>> For more options, visit https://groups.google.com/d/optout.
>
> --
> You received this message because you are subscribed to the Google Groups 
> "Django users" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected].
> To post to this group, send email to [email protected].
> Visit this group at https://groups.google.com/group/django-users.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/django-users/CAD4ANxVoNhmE78-n0SQFn1QFFz1O9-wXBs9p5G8jfsiXa190Kw%40mail.gmail.com.
> For more options, visit https://groups.google.com/d/optout.

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/CAA%3Diw_9diL9pWgww7-rsgUDsBXp07jOipi%3DouTqTFZ%2B4M-Cr0Q%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to