mirror of
https://github.com/pretix/pretix.git
synced 2026-08-07 10:17:49 +00:00
fix datetime fields
This commit is contained in:
@@ -263,7 +263,7 @@ class BaseQuestionsForm(forms.Form):
|
||||
label=label, required=required,
|
||||
help_text=help_text,
|
||||
initial=dateutil.parser.parse(initial.answer).astimezone(tz) if initial and initial.answer else (
|
||||
dateutil.parser.parse(default).astimezone(tz) if default else None),
|
||||
dateutil.parser.parse(default) if default else None),
|
||||
widget=SplitDateTimePickerWidget(time_format=get_format_without_seconds('TIME_INPUT_FORMATS')),
|
||||
)
|
||||
field.question = q
|
||||
|
||||
@@ -2,6 +2,7 @@ from django import forms
|
||||
from django.core.exceptions import ValidationError
|
||||
from django.db.models import Max
|
||||
from django.forms.formsets import DELETION_FIELD_NAME
|
||||
from django.forms.utils import ErrorList
|
||||
from django.urls import reverse
|
||||
from django.utils.translation import (
|
||||
pgettext_lazy, ugettext as __, ugettext_lazy as _,
|
||||
@@ -33,6 +34,17 @@ class CategoryForm(I18nModelForm):
|
||||
]
|
||||
|
||||
|
||||
class AdjustableTypeField(forms.Textarea):
|
||||
def __init__(self, *args, type=None, **kwargs):
|
||||
super().__init__(*args, **kwargs)
|
||||
|
||||
def value_from_datadict(self, data, files, name):
|
||||
if 'type' in data and data['type'] == 'W' and 'default_value_date' in data and 'default_value_time' in data:
|
||||
return '{} {}'.format(data['default_value_date'], data['default_value_time'])
|
||||
else:
|
||||
return super().value_from_datadict(data, files, name)
|
||||
|
||||
|
||||
class QuestionForm(I18nModelForm):
|
||||
question = I18nFormField(
|
||||
label=_("Question"),
|
||||
@@ -91,7 +103,8 @@ class QuestionForm(I18nModelForm):
|
||||
'items': forms.CheckboxSelectMultiple(
|
||||
attrs={'class': 'scrolling-multiple-choice'}
|
||||
),
|
||||
'dependency_value': forms.Select,
|
||||
'default_value': AdjustableTypeField(),
|
||||
'dependency_value': forms.Select
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -2,8 +2,11 @@
|
||||
|
||||
function update_default_value_field() {
|
||||
let input = $('#id_default_value');
|
||||
let common_attrs = ' name="default_value" placeholder="' + input.attr('placeholder') + '" title="' + input.attr('title') + '" id="id_default_value"';
|
||||
let value = input.val();
|
||||
let parent = input.parent();
|
||||
|
||||
let field = input.prop("tagName") == 'DIV' ? input.children().first() : input;
|
||||
let common_attrs = ' name="default_value" placeholder="' + field.attr('placeholder') + '" title="' + field.attr('title') + '" id="id_default_value"';
|
||||
let value = field.val();
|
||||
switch ($("#id_type").val()) {
|
||||
case 'N':
|
||||
input.replaceWith('<input type="number" class="form-control" value="' + value + '" ' + common_attrs + '>');
|
||||
@@ -24,17 +27,29 @@ function update_default_value_field() {
|
||||
break;
|
||||
case 'D':
|
||||
let dateField = input.replaceWith('<input type="text" class="form-control datepickerfield" value="' + value + '" ' + common_attrs + '>');
|
||||
form_handlers(dateField.parent());
|
||||
form_handlers(parent);
|
||||
$('.form-group:has(#id_default_value)').show();
|
||||
break;
|
||||
case 'H':
|
||||
let timeField = input.replaceWith('<input type="text" class="form-control timepickerfield" value="' + value + '" ' + common_attrs + '>');
|
||||
form_handlers(timeField.parent());
|
||||
form_handlers(parent);
|
||||
$('.form-group:has(#id_default_value)').show();
|
||||
break;
|
||||
case 'W':
|
||||
let dtField = input.replaceWith('<input type="text" class="form-control datepickerfield" value="' + value + '" ' + common_attrs + '>');
|
||||
form_handlers(dtField.parent());
|
||||
let split = value.split(' ');
|
||||
let date, time;
|
||||
if (split.length > 1) {
|
||||
date = split[0];
|
||||
time = split[1];
|
||||
} else {
|
||||
date = null;
|
||||
time = null;
|
||||
}
|
||||
let dtField = input.replaceWith('<div class="splitdatetimerow" id="id_default_value">\n' +
|
||||
'<input type="text" class="form-control splitdatetimepart datepickerfield" value="' + date + '" name="default_value_date" placeholder="' + field.attr('placeholder') + '" title="' + field.attr('title') + '">\n' +
|
||||
'<input type="text" class="form-control splitdatetimepart timepickerfield" value="' + time + '" name="default_value_time" placeholder="' + field.attr('placeholder') + '" title="' + field.attr('title') + '">\n' +
|
||||
'</div>\n');
|
||||
form_handlers(parent);
|
||||
$('.form-group:has(#id_default_value)').show();
|
||||
break;
|
||||
default:
|
||||
|
||||
Reference in New Issue
Block a user