tags:

views:

107

answers:

2

Hello

I added some permissions to a user via the admin interface.

From some reason all the perm functions fail, e.g

>>> user.get_all_permissions()
set([])

But accessing the table directly, works:

>>> user.user_permissions.all()
(list of permissions as expected)

What can cause the "get_all_permissions" (and all the perm functions like has_perm()) to fail ?

Thanks

+4  A: 

Hi, had the same problem. I am guessing that at some point you have used a self-crafted AUTHENTICATION_BACKEND? Most examples on the net of this (INCLUDING THE DJANGO 1.0 DOCUMENTATION!) don't mention that the Backends are responsible for permissions handling as well.

However, no biggie: In whatever backend file your code resides, include this import:

from django.contrib.auth.backends import ModelBackend

Then make sure the Backend you wrote extends ModelBackend, e.g.:

class EmailBackend(ModelBackend):

Should be fine.

Mark Henwood
Yep, I found it out later.I modified the backend to support case-insensitive usernames and broke the permissions.
Murkin
+1, had this exact problem!
Agos
A: 

Thanks a lot Mark! You saved my day ;)