Django Vérifier et définir des autorisations pour un groupe d'utilisateurs
J'ai un groupe d'utilisateurs appelé baseusers avec un ensemble d'autorisations, j'ai ajouté par admin. Si baseusers n'existe pas, je veux le créer et de définir les mêmes permissions qu'il a maintenant. Je peux créer le groupe, mais comment puis-je obtenir les autorisations de la coquille, puis les ajouter dans mon code? Par exemple, deux des autorisations sont nommés can_fm_list et can_fm_add. L'Application est appelée fileman. Mais dois-je utiliser id:s à la place? Voici le code, je voudrais que les autorisations à définir.
userprofile/views.py
from fileman.models import Setting (Has the permissions)
from fileman.models import Newuserpath
from django.contrib.auth.models import Group
def register(request):
...
if Group.objects.count() > 0:
newuser.groups.add(1)
else:
newgroup = Group(name='baseusers')
newgroup.save()
newuser.groups.add(1)
fileman/models.py
class Setting(models.Model):
owner = AutoForeignKey(User, unique=True, related_name='fileman_Setting')
root = models.CharField(max_length=250, null=True)
home = models.CharField(max_length=250, null=True)
buffer = models.TextField(blank=True)
class Meta:
permissions = (
("can_fm_list", _("Can look files list")),
("can_fm_add", _("Can upload files")),
("can_fm_rename", _("Can rename files")),
("can_fm_del", _("Can move files to basket")),
("can_fm_destruct", _("Can delete files")),
)
def __unicode__(self):
return unicode(self.owner)
def __init__(self, *args, **kwargs):
super(Setting, self).__init__(*args, **kwargs)
if not self.root:
self.root = None
self.home = None
def writeBuffer(self, data):
self.buffer = data
self.save()
- J'ai essayé mygroup = Groupe.objets.get(nom='baseusers') et puis mygroup.les autorisations.ajouter(can_fm_list) mais je reçois un 'can_fm_list" n'est pas défini. J'ai trouvé l'id:s en fait un mygroup.les autorisations.values_list('id',plat=True). Je peux ajouter par id mais je n'aime pas vraiment d'ajouter les autorisations par id:s car ils se trompent s'ils changent pour une raison quelconque, mais ne peut pas comprendre l'autre sens.
Vous devez vous connecter pour publier un commentaire.
Prendre un coup d'oeil à ce blog: Django: À L'Aide Du Système D'Autorisation
Adapté à votre exemple:
newgroup.permissions = [permission1, permission2]
oùpermission1
etpermission2
sont des objets du modèle d'Autorisation.Pour les autres qui sont à la recherche pour l'ajout de plusieurs autorisations à la fois,