Ich versuche, einige benutzerdefinierte Berechtigungen für eine Django-Anwendung einzurichten, aber es scheint nicht zu funktionieren. Die offizielle Dokumentation ist ein bisschen dürftig und erwähnt nicht (zumindest, dass ich finden kann), wie man eine Erlaubnis wirklich setzt? Basierend auf einigen 3rd-Party-Tutorials, die ich gefunden habe ich die User-Klasse erweitert und es scheint gut zu funktionieren:Ich kann keine benutzerdefinierten Berechtigungen in Django setzen
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'),
)
Wenn ich versuche jedoch eine Erlaubnis zu setzen, funktioniert es nicht:
>>> 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([])
Irgendwelche Ideen, was ich falsch mache? Ich benutze Django 1.2.1 mit Python 2.4.3. Alle Eingaben geschätzt ...
Falls jemand auf der Suche nach der Lösung kommt, fand ich das hilfreich: http://stackoverflow.com/questions/10102918/cant-change-user-permissions-during-unittest-in-django – sid