Audit common app

Add support to override settings of the FilteredSelectionForm
via subclass attributes. Add keyword arguments to calls.

Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
This commit is contained in:
Roberto Rosario
2019-01-02 14:32:22 -04:00
parent 92e615ce4c
commit 125c133334
14 changed files with 134 additions and 99 deletions

View File

@@ -9,6 +9,8 @@ from django.db import models
from django.utils.module_loading import import_string
from django.utils.translation import ugettext_lazy as _
from mayan.apps.acls.models import AccessControlList
from .classes import Package
from .models import UserLocaleProfile
from .utils import resolve_attribute
@@ -134,12 +136,20 @@ class FilteredSelectionForm(forms.Form):
Form to select the from a list of choice filtered by access. Can be
configure to allow single or multiple selection.
"""
_field_name = None
_label = None
_help_text = None
_permission = None
_queryset = None
_widget_class = None
_widget_attributes = None
def __init__(self, *args, **kwargs):
field_name = kwargs.pop('field_name', None)
label = kwargs.pop('label', None)
help_text = kwargs.pop('help_text', None)
permission = kwargs.pop('permission', None)
queryset = kwargs.pop('queryset', None)
field_name = self._field_name or kwargs.pop('field_name', None)
label = self._label or kwargs.pop('label', None)
help_text = self._help_text or kwargs.pop('help_text', None)
permission = self._permission or kwargs.pop('permission', None)
queryset = self.get_queryset() or kwargs.pop('queryset', None)
if queryset is None:
model = kwargs.pop('model', None)
@@ -150,12 +160,19 @@ class FilteredSelectionForm(forms.Form):
queryset = model.objects.all()
user = kwargs.pop('user', None)
widget_class = kwargs.pop('widget_class', None)
widget_attributes = kwargs.pop('widget_attributes', {'size': '10'})
user = self.get_user() or kwargs.pop('user', None)
widget_class = self._widget_class or kwargs.pop('widget_class', None)
widget_attributes = self._widget_attributes or kwargs.pop(
'widget_attributes', {'size': '10'}
)
if not widget_class:
if kwargs.pop('allow_multiple', False):
if self._allow_multiple is not None:
allow_multiple = self._allow_multiple
else:
allow_multiple = self.kwargs.pop('allow_multiple', False)
if allow_multiple:
extra_kwargs = {}
field_class = forms.ModelMultipleChoiceField
widget_class = forms.widgets.SelectMultiple
@@ -177,6 +194,12 @@ class FilteredSelectionForm(forms.Form):
widget=widget_class(attrs=widget_attributes), **extra_kwargs
)
def get_queryset(self):
return self._queryset
def get_user(self):
return None
class LicenseForm(FileDisplayForm):
DIRECTORY = ()