Add FilteredSelectionForm subclass ACLCreateForm

Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
This commit is contained in:
Roberto Rosario
2019-04-15 01:38:27 -04:00
parent cb102ed115
commit 0d69274bb4
4 changed files with 32 additions and 21 deletions

View File

@@ -59,6 +59,7 @@
* Use FilteredSelectionForm for TagMultipleSelectionForm.
* Use FilteredSelectionForm for the class CabinetListForm.
* Add keyword arguments to URL definitions.
* Use FilteredSelectionForm to add a new ACLCreateForm.
3.1.11 (2019-04-XX)
===================

View File

@@ -83,6 +83,7 @@ Other changes
* Use FilteredSelectionForm for TagMultipleSelectionForm.
* Use FilteredSelectionForm for the class CabinetListForm.
* Add keyword arguments to URL definitions.
* Use FilteredSelectionForm to add a new ACLCreateForm.
Removals

17
mayan/apps/acls/forms.py Normal file
View File

@@ -0,0 +1,17 @@
from __future__ import unicode_literals
from django import forms
from django.utils.translation import ugettext_lazy as _
from mayan.apps.common.forms import FilteredSelectionForm
from .models import AccessControlList
class ACLCreateForm(FilteredSelectionForm, forms.ModelForm):
class Meta:
field_name = 'role'
fields = ('role',)
label = _('Role')
model = AccessControlList
widget_attributes = {'class': 'select2'}

View File

@@ -4,7 +4,7 @@ import itertools
import logging
from django.contrib.contenttypes.models import ContentType
from django.http import Http404, HttpResponseRedirect
from django.http import Http404
from django.shortcuts import get_object_or_404
from django.template import RequestContext
from django.urls import reverse
@@ -16,9 +16,10 @@ from mayan.apps.common.views import (
SingleObjectListView
)
from mayan.apps.permissions import Permission, PermissionNamespace
from mayan.apps.permissions.models import StoredPermission
from mayan.apps.permissions.models import Role, StoredPermission
from .classes import ModelPermission
from .forms import ACLCreateForm
from .icons import icon_acl_list
from .links import link_acl_create
from .models import AccessControlList
@@ -28,7 +29,7 @@ logger = logging.getLogger(__name__)
class ACLCreateView(SingleObjectCreateView):
fields = ('role',)
form_class = ACLCreateForm
model = AccessControlList
def dispatch(self, request, *args, **kwargs):
@@ -56,20 +57,6 @@ class ACLCreateView(SingleObjectCreateView):
'content_object': self.content_object
}
def form_valid(self, form):
try:
acl = AccessControlList.objects.get(
content_type=self.object_content_type,
object_id=self.content_object.pk,
role=form.cleaned_data['role']
)
except AccessControlList.DoesNotExist:
return super(ACLCreateView, self).form_valid(form)
else:
return HttpResponseRedirect(
reverse('acls:acl_permissions', args=(acl.pk,))
)
def get_extra_context(self):
return {
'object': self.content_object,
@@ -78,11 +65,16 @@ class ACLCreateView(SingleObjectCreateView):
) % self.content_object
}
def get_form_extra_kwargs(self):
return {
'queryset': Role.objects.exclude(
pk__in=self.content_object.acls.values('role')
),
'user': self.request.user
}
def get_success_url(self):
if self.object.pk:
return reverse('acls:acl_permissions', args=(self.object.pk,))
else:
return super(ACLCreateView, self).get_success_url()
return reverse('acls:acl_permissions', args=(self.object.pk,))
class ACLDeleteView(SingleObjectDeleteView):