diff --git a/HISTORY.rst b/HISTORY.rst index 43301dfb24..e0abaf4a1a 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -144,6 +144,7 @@ that document type is removed from the workflow. - Make error messages persistent and increase the timeout of warning to 10 seconds. - Improve rendering of the details form. +- Update rendering of the readonly multiselect widget to conform to Django's updated field class interface. 2.7.3 (2017-09-11) ================== diff --git a/docs/releases/3.0.rst b/docs/releases/3.0.rst index e32f49d0fe..45d5e17e3c 100644 --- a/docs/releases/3.0.rst +++ b/docs/releases/3.0.rst @@ -436,6 +436,8 @@ Other changes worth mentioning upload event as trigger. Thanks to Sema @Miggaten for the find and the solution. - Make error messages persistent and increase the timeout of warning to 10 seconds. +- Improve rendering of the details form. +- Update rendering of the readonly multiselect widget to conform to Django's updated field class interface. Removals diff --git a/mayan/apps/appearance/templatetags/appearance_tags.py b/mayan/apps/appearance/templatetags/appearance_tags.py index 9204e00827..8ee9a73b92 100644 --- a/mayan/apps/appearance/templatetags/appearance_tags.py +++ b/mayan/apps/appearance/templatetags/appearance_tags.py @@ -11,6 +11,6 @@ def get_choice_value(field): try: return dict(field.field.choices)[field.value()] except TypeError: - return ', '.join([entry for id, entry in field.field.choices]) + return ', '.join([subwidget.data['label'] for subwidget in field.subwidgets if subwidget.data['selected']]) except KeyError: return _('None') diff --git a/mayan/apps/common/forms.py b/mayan/apps/common/forms.py index 984b0c7d49..6b0efaf12e 100644 --- a/mayan/apps/common/forms.py +++ b/mayan/apps/common/forms.py @@ -12,9 +12,7 @@ from django.utils.translation import ugettext_lazy as _ from .classes import Package from .models import UserLocaleProfile from .utils import return_attrib -from .widgets import ( - DetailSelectMultiple, DisableableSelectWidget, PlainWidget -) +from .widgets import DisableableSelectWidget, PlainWidget class ChoiceForm(forms.Form): @@ -62,22 +60,6 @@ class DetailForm(forms.ModelForm): widget=extra_field.get('widget', PlainWidget) ) - for field_name, field in self.fields.items(): - if isinstance(field.widget, forms.widgets.SelectMultiple): - self.fields[field_name].widget = DetailSelectMultiple( - choices=field.widget.choices, - attrs=field.widget.attrs, - queryset=getattr(field, 'queryset', None), - ) - self.fields[field_name].help_text = '' - elif isinstance(field.widget, forms.widgets.Select): - self.fields[field_name].widget = DetailSelectMultiple( - choices=field.widget.choices, - attrs=field.widget.attrs, - queryset=getattr(field, 'queryset', None), - ) - self.fields[field_name].help_text = '' - for field_name, field in self.fields.items(): self.fields[field_name].widget.attrs.update( {'readonly': 'readonly'} diff --git a/mayan/apps/common/widgets.py b/mayan/apps/common/widgets.py index a7615e0788..01030856a1 100644 --- a/mayan/apps/common/widgets.py +++ b/mayan/apps/common/widgets.py @@ -7,47 +7,6 @@ from django.utils.safestring import mark_safe from django.utils.translation import ugettext_lazy as _ -class DetailSelectMultiple(forms.widgets.SelectMultiple): - def __init__(self, queryset=None, *args, **kwargs): - self.queryset = queryset - super(DetailSelectMultiple, self).__init__(*args, **kwargs) - - def render(self, name, value, attrs=None, choices=(), *args, **kwargs): - if value is None: - value = '' - final_attrs = self.build_attrs(attrs, name=name) - css_class = final_attrs.get('class', 'list') - output = '