I am trying to configure some user permissions for a Django application but cannot make it work. The official documentation is a bit sparse and doesn't mention (at least what I can find) how to actually set the permission? Based on a few third-party tutorials that I found, I extended the User class and it seems to work fine:
from django.db import models from django.contrib.auth.models import User,UserManager class CustomUser(User): custom_field = models.CharField(max_length=250) objects = UserManager() class Meta: permissions = ( ('is_custom','Has a Custom Permission'), )
When I try to set the resolution, it does not work:
>>> from project.custauth.models import CustomUser >>> from django.contrib.auth.models import User, Permission >>> user = CustomUser.objects.get(username='new.user') >>> user <CustomUser: new.user> >>> custom_permission = Permission.objects.get(codename="is_custom") >>> custom_permission <Permission: custauth | custom user | Has a Custom Permission> >>> custom_permission.save() >>> user.user_permissions.add(custom_permission) >>> user.save() >>> user.has_perm(custom_permission) False >>> user.get_all_permissions() set([])
Any ideas on what I'm doing wrong? I am using Django 1.2.1 with Python 2.4.3. All input is evaluated ...
python django permissions
Sparky
source share