Code: Alles auswählen
from django.contrib.auth.models import Permission
class Special(models.Model):
permissions = models.ManyToManyField(Permission)
Mir geht es darum, dass nur spezielle Benutzer, die eben diese ausgewählten Berechtigungen haben, etwas Bestimmtes mit einem Special anfangen dürfen.
Dafür müsste ich also die hinterlegten Berechtigungen gegen die des Benutzers prüfen, da stecke ich aber leider fest.
Das hier sah mir am erfolgversprechendsten aus, funktioniert aber leider nicht (user.has_perm(permission) ist immer False, auch wenn der Benutzer die Berechtigung hat):
Code: Alles auswählen
special = Special.objects.get(id=1)
for permission in special.permissions.all():
if user.has_perm(permission):
return True
return False
Edit: Oh, ich sehe gerade, dass user.has_perm einen String erwartet. Dann hätte ich aber gedacht, dass folgendes tut:
Code: Alles auswählen
Special.objects.get(id=1)
user_permissions = user.get_all_permissions()
for permission in special.permissions.all():
if permission in user_permissions:
return True
return False