From 40058daae3d3de39b438133d4fd151730ca30c31 Mon Sep 17 00:00:00 2001 From: Serghei Mihai Date: Thu, 24 Aug 2017 18:12:46 +0200 Subject: [PATCH] widgets: use localized format for datetime widgets (#17935) --- src/authentic2/widgets.py | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/src/authentic2/widgets.py b/src/authentic2/widgets.py index 7c643cf3..63ef127b 100644 --- a/src/authentic2/widgets.py +++ b/src/authentic2/widgets.py @@ -12,8 +12,9 @@ import re import uuid from django.forms.widgets import DateTimeInput, DateInput, TimeInput -from django.utils.formats import get_language +from django.utils.formats import get_language, get_format from django.utils.safestring import mark_safe +from django.utils.translation import ugettext_lazy as _ from gadjo.templatetags.gadjo import xstatic @@ -51,6 +52,7 @@ BOOTSTRAP_INPUT_TEMPLATE = """ %(rendered_widget)s %(clear_button)s + %(format_label)s %(format)s @@ -77,7 +79,7 @@ class PickerWidgetMixin(object): def __init__(self, attrs=None, options=None, usel10n=None): if attrs is None: - attrs = {'readonly': ''} + attrs = {} self.options = options self.options['language'] = get_language().split('-')[0] @@ -92,6 +94,12 @@ class PickerWidgetMixin(object): super(PickerWidgetMixin, self).__init__(attrs, format=self.format) + def get_format(self): + format = get_format(self.format_name)[0] + for py, js in DATE_FORMAT_PY_JS_MAPPING.iteritems(): + format = format.replace(py, js) + return format + def render(self, name, value, attrs=None): final_attrs = self.build_attrs(attrs) final_attrs['class'] = "controls input-append date" @@ -115,7 +123,9 @@ class PickerWidgetMixin(object): rendered_widget=rendered_widget, clear_button=CLEAR_BTN_TEMPLATE if self.options.get('clearBtn') else '', glyphicon=self.glyphicon, - options=js_options + options=js_options, + format_label=_('Format:'), + format=self.options['format'] ) ) @@ -135,7 +145,7 @@ class DateTimeWidget(PickerWidgetMixin, DateTimeInput): options = {} # Set the default options to show only the datepicker object - options['format'] = options.get('format', 'dd/mm/yyyy hh:ii') + options['format'] = options.get('format', self.get_format()) super(DateTimeWidget, self).__init__(attrs, options, usel10n) @@ -157,7 +167,7 @@ class DateWidget(PickerWidgetMixin, DateInput): # Set the default options to show only the datepicker object options['startView'] = options.get('startView', 2) options['minView'] = options.get('minView', 2) - options['format'] = options.get('format', 'dd/mm/yyyy') + options['format'] = options.get('format', self.get_format()) super(DateWidget, self).__init__(attrs, options, usel10n) @@ -180,6 +190,6 @@ class TimeWidget(PickerWidgetMixin, TimeInput): options['startView'] = options.get('startView', 1) options['minView'] = options.get('minView', 0) options['maxView'] = options.get('maxView', 1) - options['format'] = options.get('format', 'hh:ii') + options['format'] = options.get('format', self.get_format()) super(TimeWidget, self).__init__(attrs, options, usel10n) -- 2.14.1