【发布时间】:2011-08-14 13:25:23
【问题描述】:
我有一个名为 baseusers 的 用户组,它具有一组我通过管理员添加的权限。如果 baseusers 不存在,我想创建它并设置它现在拥有的相同权限。我可以创建组,但是如何从 shell 中找出权限,然后将它们添加到我的代码中?例如,其中两个权限名为 can_fm_list 和 can_fm_add。应用程序称为 fileman。但是我需要使用 id:s 代替吗?这是我想要设置权限的代码。
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()
【问题讨论】:
-
我尝试了 mygroup = Group.objects.get(name='baseusers') 然后 mygroup.permissions.add(can_fm_list) 但我得到一个 'can_fm_list' 没有定义。我通过执行 mygroup.permissions.values_list('id',flat=True) 找到了 id:s。我可以通过 id 添加它们,但我真的不喜欢通过 id:s 添加权限,因为如果它们由于某种原因发生更改但无法找出其他方式,它们将是错误的。
标签: django django-models django-views