fix unique constraint check for project perm

This commit is contained in:
Élie Bouttier 2014-08-30 17:27:58 -07:00
parent 5e6bd1a4ef
commit c394bc17d9
4 changed files with 9 additions and 6 deletions

View file

@ -62,7 +62,9 @@ class ProjectPermissionForm(PermissionForm):
class Meta:
model = ProjectPermission
fields = [ 'grantee_type', 'grantee_id' ]
# project is required for the unicity check
fields = [ 'project', 'grantee_type', 'grantee_id' ]
widgets = {
'project': HiddenInput,
'grantee_id': HiddenInput,
}

View file

@ -82,7 +82,7 @@ class PermissionModel(models.Model):
class GlobalPermission(PermissionModel):
class Meta:
unique_together = [ 'grantee_type', 'grantee_id' ]
unique_together = ( 'grantee_type', 'grantee_id' )
# Global permissions
@ -120,10 +120,9 @@ class GlobalPermission(PermissionModel):
class ProjectPermission(PermissionModel):
class Meta:
unique_together = [ 'project', 'grantee_type', 'grantee_id' ]
unique_together = ( 'project', 'grantee_type', 'grantee_id' )
project = models.ForeignKey(Project, editable=False,
related_name='permissions')
project = models.ForeignKey(Project, related_name='permissions')
manage_project_permission = models.BooleanField(default=False)

View file

@ -82,7 +82,8 @@ def project_perm_edit(request, project, id=None):
perm = get_object_or_404(ProjectPermission, project=project, id=id)
else:
perm = None
form = ProjectPermissionForm(request.POST or None, instance=perm)
form = ProjectPermissionForm(request.POST or None, instance=perm,
initial={'project': project.id})
if request.method == 'POST' and form.is_valid():
if id:
form.save()