diff --git a/mayan/apps/appearance/templates/appearance/generic_form_instance.html b/mayan/apps/appearance/templates/appearance/generic_form_instance.html index 9eeef9aa9b..4a60de4f58 100644 --- a/mayan/apps/appearance/templates/appearance/generic_form_instance.html +++ b/mayan/apps/appearance/templates/appearance/generic_form_instance.html @@ -69,6 +69,8 @@ {{ option.render }} {% endfor %} + {% elif field|widget_type == 'datetimeinput' %} + {{ field.value }} {% else %} {% render_field field class+="form-control" %} {% endif %} diff --git a/mayan/apps/common/forms.py b/mayan/apps/common/forms.py index 338b5cbc50..de34579cf6 100644 --- a/mayan/apps/common/forms.py +++ b/mayan/apps/common/forms.py @@ -40,27 +40,27 @@ class ChoiceForm(forms.Form): class DetailForm(forms.ModelForm): - def __init__(self, extra_fields=None, *args, **kwargs): + def __init__(self, *args, **kwargs): + self.extra_fields = kwargs.pop('extra_fields', ()) super(DetailForm, self).__init__(*args, **kwargs) - if extra_fields: - for extra_field in extra_fields: - result = return_attrib(self.instance, extra_field['field']) - label = 'label' in extra_field and extra_field['label'] or None - # TODO: Add others result types <=> Field types - if isinstance(result, models.query.QuerySet): - self.fields[extra_field['field']] = \ - forms.ModelMultipleChoiceField( - queryset=result, label=label) - else: - self.fields[extra_field['field']] = forms.CharField( - label=extra_field['label'], - initial=escape( - return_attrib( - self.instance, - extra_field['field'], None - ) - ), - widget=PlainWidget) + + for extra_field in self.extra_fields: + result = return_attrib(self.instance, extra_field['field']) + label = 'label' in extra_field and extra_field['label'] or None + # TODO: Add others result types <=> Field types + if isinstance(result, models.query.QuerySet): + self.fields[extra_field['field']] = \ + forms.ModelMultipleChoiceField( + queryset=result, label=label) + else: + self.fields[extra_field['field']] = forms.CharField( + label=extra_field['label'], + initial=return_attrib( + self.instance, + extra_field['field'], None + ), + widget=extra_field.get('widget', PlainWidget) + ) for field_name, field in self.fields.items(): if isinstance(field.widget, forms.widgets.SelectMultiple): diff --git a/mayan/apps/common/generics.py b/mayan/apps/common/generics.py index c7cd02129f..d46dc87fc2 100644 --- a/mayan/apps/common/generics.py +++ b/mayan/apps/common/generics.py @@ -8,7 +8,9 @@ from django.utils.translation import ugettext_lazy as _ from django.views.generic import ( FormView as DjangoFormView, DetailView, TemplateView ) -from django.views.generic.edit import CreateView, DeleteView, UpdateView +from django.views.generic.edit import ( + CreateView, DeleteView, ModelFormMixin, UpdateView +) from django.views.generic.list import ListView from pure_pagination.mixins import PaginationMixin @@ -332,12 +334,12 @@ class SingleObjectDeleteView(DeleteExtraDataMixin, ViewPermissionCheckMixin, Obj return result -class SingleObjectDetailView(ViewPermissionCheckMixin, ObjectPermissionCheckMixin, ExtraContextMixin, DetailView): +class SingleObjectDetailView(ViewPermissionCheckMixin, ObjectPermissionCheckMixin, ExtraContextMixin, ModelFormMixin, DetailView): template_name = 'appearance/generic_form.html' def get_context_data(self, **kwargs): context = super(SingleObjectDetailView, self).get_context_data(**kwargs) - context.update({'read_only': True}) + context.update({'read_only': True, 'form': self.get_form()}) return context diff --git a/mayan/apps/common/utils.py b/mayan/apps/common/utils.py index 1238d2efad..373c79dfa6 100644 --- a/mayan/apps/common/utils.py +++ b/mayan/apps/common/utils.py @@ -71,10 +71,6 @@ def get_descriptor(file_input, read=True): return file_input -def render_date_object(date_time_object): - return force_text(formats.localize(date_time_object, use_l10n=True)) - - def return_attrib(obj, attrib, arguments=None): try: if isinstance(attrib, types.FunctionType):