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: class Meta:
model = ProjectPermission model = ProjectPermission
fields = [ 'grantee_type', 'grantee_id' ] # project is required for the unicity check
fields = [ 'project', 'grantee_type', 'grantee_id' ]
widgets = { widgets = {
'project': HiddenInput,
'grantee_id': HiddenInput, 'grantee_id': HiddenInput,
} }

View file

@ -82,7 +82,7 @@ class PermissionModel(models.Model):
class GlobalPermission(PermissionModel): class GlobalPermission(PermissionModel):
class Meta: class Meta:
unique_together = [ 'grantee_type', 'grantee_id' ] unique_together = ( 'grantee_type', 'grantee_id' )
# Global permissions # Global permissions
@ -120,10 +120,9 @@ class GlobalPermission(PermissionModel):
class ProjectPermission(PermissionModel): class ProjectPermission(PermissionModel):
class Meta: class Meta:
unique_together = [ 'project', 'grantee_type', 'grantee_id' ] unique_together = ( 'project', 'grantee_type', 'grantee_id' )
project = models.ForeignKey(Project, editable=False, project = models.ForeignKey(Project, related_name='permissions')
related_name='permissions')
manage_project_permission = models.BooleanField(default=False) 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) perm = get_object_or_404(ProjectPermission, project=project, id=id)
else: else:
perm = None 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 request.method == 'POST' and form.is_valid():
if id: if id:
form.save() form.save()

View file

@ -32,6 +32,7 @@
<form method="post" role="form"> <form method="post" role="form">
{% csrf_token %} {% csrf_token %}
{% bootstrap_form_errors form %} {% bootstrap_form_errors form %}
{% bootstrap_field form.project %}
{% bootstrap_field form.grantee_type %} {% bootstrap_field form.grantee_type %}
{% bootstrap_field form.grantee_id %} {% bootstrap_field form.grantee_id %}
<div class="form-group"> <div class="form-group">