mirror of
https://github.com/Hopiu/wagtail.git
synced 2026-05-18 12:11:11 +00:00
Standardise date/time formats between admin datetime widgets and Javascript code.
The JS for the datetime picker was previously updated to include seconds, to match Django's default format and thus fix #479 - however, the same bug also affected the time picker, which was left unfixed. Since we typically don't want seconds in our datetimes anyhow, we reverse that fix here, and instead update AdminDateWidget / AdminTimeWidget / AdminDateTimeWidget to explicitly use the seconds-less format that the JS expects. This also ensures that the JS behaviour will not break as a result of a site owner setting a non-standard value for DATE_INPUT_FORMATS / TIME_INPUT_FORMATS / DATETIME_INPUT_FORMATS in their site settings.
This commit is contained in:
parent
6f23a5b37b
commit
550d4e94da
4 changed files with 42 additions and 4 deletions
|
|
@ -104,7 +104,7 @@ function initDateTimeChooser(id) {
|
|||
if (window.dateTimePickerTranslations) {
|
||||
$('#' + id).datetimepicker({
|
||||
closeOnDateSelect: true,
|
||||
format: 'Y-m-d H:i:s',
|
||||
format: 'Y-m-d H:i',
|
||||
scrollInput:false,
|
||||
i18n: {
|
||||
lang: window.dateTimePickerTranslations
|
||||
|
|
@ -113,7 +113,7 @@ function initDateTimeChooser(id) {
|
|||
});
|
||||
} else {
|
||||
$('#' + id).datetimepicker({
|
||||
format: 'Y-m-d H:i:s',
|
||||
format: 'Y-m-d H:i',
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -28,16 +28,28 @@ class AdminAutoHeightTextInput(WidgetWithScript, widgets.Textarea):
|
|||
return '$("#{0}").autosize();'.format(id_)
|
||||
|
||||
class AdminDateInput(WidgetWithScript, widgets.DateInput):
|
||||
# Set a default date format to match the one that our JS date picker expects -
|
||||
# it can still be overridden explicitly, but this way it won't be affected by
|
||||
# the DATE_INPUT_FORMATS setting
|
||||
def __init__(self, attrs=None, format='%Y-%m-%d'):
|
||||
super(AdminDateInput, self).__init__(attrs=attrs, format=format)
|
||||
|
||||
def render_js_init(self, id_, name, value):
|
||||
return 'initDateChooser({0});'.format(json.dumps(id_))
|
||||
|
||||
|
||||
class AdminTimeInput(WidgetWithScript, widgets.TimeInput):
|
||||
def __init__(self, attrs=None, format='%H:%M'):
|
||||
super(AdminTimeInput, self).__init__(attrs=attrs, format=format)
|
||||
|
||||
def render_js_init(self, id_, name, value):
|
||||
return 'initTimeChooser({0});'.format(json.dumps(id_))
|
||||
|
||||
|
||||
class AdminDateTimeInput(WidgetWithScript, widgets.DateTimeInput):
|
||||
def __init__(self, attrs=None, format='%Y-%m-%d %H:%M'):
|
||||
super(AdminDateTimeInput, self).__init__(attrs=attrs, format=format)
|
||||
|
||||
def render_js_init(self, id_, name, value):
|
||||
return 'initDateTimeChooser({0});'.format(json.dumps(id_))
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,26 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import models, migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('wagtailcore', '0010_change_page_owner_to_null_on_delete'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='page',
|
||||
name='expire_at',
|
||||
field=models.DateTimeField(help_text='Please add a date-time in the form YYYY-MM-DD hh:mm.', null=True, verbose_name='Expiry date/time', blank=True),
|
||||
preserve_default=True,
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='page',
|
||||
name='go_live_at',
|
||||
field=models.DateTimeField(help_text='Please add a date-time in the form YYYY-MM-DD hh:mm.', null=True, verbose_name='Go live date/time', blank=True),
|
||||
preserve_default=True,
|
||||
),
|
||||
]
|
||||
|
|
@ -278,8 +278,8 @@ class Page(six.with_metaclass(PageBase, MP_Node, ClusterableModel, index.Indexed
|
|||
show_in_menus = models.BooleanField(default=False, help_text=_("Whether a link to this page will appear in automatically generated menus"))
|
||||
search_description = models.TextField(blank=True)
|
||||
|
||||
go_live_at = models.DateTimeField(verbose_name=_("Go live date/time"), help_text=_("Please add a date-time in the form YYYY-MM-DD hh:mm:ss."), blank=True, null=True)
|
||||
expire_at = models.DateTimeField(verbose_name=_("Expiry date/time"), help_text=_("Please add a date-time in the form YYYY-MM-DD hh:mm:ss."), blank=True, null=True)
|
||||
go_live_at = models.DateTimeField(verbose_name=_("Go live date/time"), help_text=_("Please add a date-time in the form YYYY-MM-DD hh:mm."), blank=True, null=True)
|
||||
expire_at = models.DateTimeField(verbose_name=_("Expiry date/time"), help_text=_("Please add a date-time in the form YYYY-MM-DD hh:mm."), blank=True, null=True)
|
||||
expired = models.BooleanField(default=False, editable=False)
|
||||
|
||||
locked = models.BooleanField(default=False, editable=False)
|
||||
|
|
|
|||
Loading…
Reference in a new issue