improve & fix permissions forms

This commit is contained in:
Élie Bouttier 2014-09-02 21:58:49 -07:00
parent be02d3657d
commit 90a3e749e5
2 changed files with 13 additions and 7 deletions

View file

@ -26,6 +26,9 @@ class ProjectPermissionField(PermissionField):
@python_2_unicode_compatible @python_2_unicode_compatible
class PermissionModel(models.Model): class PermissionModel(models.Model):
class Meta:
abstract = True
GRANTEE_USER = 0 GRANTEE_USER = 0
GRANTEE_GROUP = 1 GRANTEE_GROUP = 1
GRANTEE_TEAM = 2 GRANTEE_TEAM = 2
@ -37,7 +40,7 @@ class PermissionModel(models.Model):
grantee_type = models.IntegerField(choices=GRANTEE_TYPE, grantee_type = models.IntegerField(choices=GRANTEE_TYPE,
default=GRANTEE_USER, verbose_name="Grantee type") default=GRANTEE_USER, verbose_name="Grantee type")
grantee_id = models.IntegerField(blank=True) grantee_id = models.IntegerField()
def get_grantee(self): def get_grantee(self):
if self.grantee_type == self.GRANTEE_USER: if self.grantee_type == self.GRANTEE_USER:
@ -62,9 +65,6 @@ class PermissionModel(models.Model):
grantee = property(get_grantee, set_grantee) grantee = property(get_grantee, set_grantee)
class Meta:
abstract = True
def granted_to(self, user): def granted_to(self, user):
if not user.is_authenticated(): if not user.is_authenticated():
return False return False

View file

@ -21,9 +21,12 @@ def global_perm_list(request):
def global_perm_edit(request, id=None): def global_perm_edit(request, id=None):
if id: if id:
perm = get_object_or_404(GlobalPermission, id=id) perm = get_object_or_404(GlobalPermission, id=id)
form = GlobalPermissionForm(request.POST or None, instance=perm)
else: else:
perm = None perm = None
form = GlobalPermissionForm(request.POST or None, instance=perm) form = GlobalPermissionForm(request.POST or None, initial={
'grantee_id': 0,
})
if request.method == 'POST' and form.is_valid(): if request.method == 'POST' and form.is_valid():
form.save() form.save()
if id: if id:
@ -76,10 +79,13 @@ def project_perm_list(request, project):
def project_perm_edit(request, project, id=None): def project_perm_edit(request, project, id=None):
if id: if id:
perm = get_object_or_404(ProjectPermission, project=project, id=id) perm = get_object_or_404(ProjectPermission, project=project, id=id)
form = ProjectPermissionForm(request.POST or None, instance=perm)
else: else:
perm = None perm = None
form = ProjectPermissionForm(request.POST or None, instance=perm, form = ProjectPermissionForm(request.POST or None, initial={
initial={'project': project.id}) 'project': project.id,
'grantee_id': 0,
})
if request.method == 'POST' and form.is_valid(): if request.method == 'POST' and form.is_valid():
if not form.cleaned_data['project'] == project: if not form.cleaned_data['project'] == project:
raise PermissionDenied() raise PermissionDenied()