From 90a3e749e5c7aa37757ac2a06ed417015c2d14f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89lie=20Bouttier?= Date: Tue, 2 Sep 2014 21:58:49 -0700 Subject: [PATCH] improve & fix permissions forms --- permissions/models.py | 8 ++++---- permissions/views.py | 12 +++++++++--- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/permissions/models.py b/permissions/models.py index d103fb3..30b6a35 100644 --- a/permissions/models.py +++ b/permissions/models.py @@ -26,6 +26,9 @@ class ProjectPermissionField(PermissionField): @python_2_unicode_compatible class PermissionModel(models.Model): + class Meta: + abstract = True + GRANTEE_USER = 0 GRANTEE_GROUP = 1 GRANTEE_TEAM = 2 @@ -37,7 +40,7 @@ class PermissionModel(models.Model): grantee_type = models.IntegerField(choices=GRANTEE_TYPE, default=GRANTEE_USER, verbose_name="Grantee type") - grantee_id = models.IntegerField(blank=True) + grantee_id = models.IntegerField() def get_grantee(self): if self.grantee_type == self.GRANTEE_USER: @@ -62,9 +65,6 @@ class PermissionModel(models.Model): grantee = property(get_grantee, set_grantee) - class Meta: - abstract = True - def granted_to(self, user): if not user.is_authenticated(): return False diff --git a/permissions/views.py b/permissions/views.py index 4d8294e..ad9b1a7 100644 --- a/permissions/views.py +++ b/permissions/views.py @@ -21,9 +21,12 @@ def global_perm_list(request): def global_perm_edit(request, id=None): if id: perm = get_object_or_404(GlobalPermission, id=id) + form = GlobalPermissionForm(request.POST or None, instance=perm) else: 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(): form.save() if id: @@ -76,10 +79,13 @@ def project_perm_list(request, project): def project_perm_edit(request, project, id=None): if id: perm = get_object_or_404(ProjectPermission, project=project, id=id) + form = ProjectPermissionForm(request.POST or None, instance=perm) else: perm = None - form = ProjectPermissionForm(request.POST or None, instance=perm, - initial={'project': project.id}) + form = ProjectPermissionForm(request.POST or None, initial={ + 'project': project.id, + 'grantee_id': 0, + }) if request.method == 'POST' and form.is_valid(): if not form.cleaned_data['project'] == project: raise PermissionDenied()