Improve the date localte handling of the DetailView and DetailForm.
This commit is contained in:
@@ -69,6 +69,8 @@
|
||||
{{ option.render }}
|
||||
</div>
|
||||
{% endfor %}
|
||||
{% elif field|widget_type == 'datetimeinput' %}
|
||||
{{ field.value }}
|
||||
{% else %}
|
||||
{% render_field field class+="form-control" %}
|
||||
{% endif %}
|
||||
|
||||
@@ -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):
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
|
||||
@@ -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):
|
||||
|
||||
Reference in New Issue
Block a user