From d0038dfa1056d34ee9149b616698738cf612575a Mon Sep 17 00:00:00 2001 From: Amin Alaee Date: Tue, 29 Aug 2023 10:03:11 +0200 Subject: [PATCH] Switch to HTML time input for Time field --- sqladmin/fields.py | 9 --------- sqladmin/forms.py | 2 +- sqladmin/statics/js/main.js | 12 ------------ sqladmin/widgets.py | 11 ----------- tests/test_fields.py | 18 ------------------ 5 files changed, 1 insertion(+), 51 deletions(-) diff --git a/sqladmin/fields.py b/sqladmin/fields.py index e3b2ba8d..3c893ab9 100644 --- a/sqladmin/fields.py +++ b/sqladmin/fields.py @@ -19,7 +19,6 @@ "QuerySelectMultipleField", "SelectField", "Select2TagsField", - "TimeField", ] @@ -39,14 +38,6 @@ class DateTimeField(fields.DateTimeField): widget = sqladmin_widgets.DateTimePickerWidget() -class TimeField(fields.TimeField): - """ - A text field which stores a `datetime.time` object. - """ - - widget = sqladmin_widgets.TimePickerWidget() - - class IntervalField(fields.StringField): """ A text field which stores a `datetime.timedelta` object. diff --git a/sqladmin/forms.py b/sqladmin/forms.py index 89ba5fed..10c40da2 100644 --- a/sqladmin/forms.py +++ b/sqladmin/forms.py @@ -32,6 +32,7 @@ IntegerField, StringField, TextAreaField, + TimeField, validators, ) from wtforms.fields.core import UnboundField @@ -57,7 +58,6 @@ QuerySelectMultipleField, Select2TagsField, SelectField, - TimeField, ) from sqladmin.helpers import ( choice_type_coerce_factory, diff --git a/sqladmin/statics/js/main.js b/sqladmin/statics/js/main.js index 615c74ac..f66ec681 100644 --- a/sqladmin/statics/js/main.js +++ b/sqladmin/statics/js/main.js @@ -82,18 +82,6 @@ $(':input[data-role="datetimepicker"]:not([readonly])').each(function () { }); }); -// Time picker -$(':input[data-role="timepicker"]:not([readonly])').each(function () { - $(this).flatpickr({ - noCalendar: true, - enableTime: true, - allowInput: true, - enableSeconds: true, - time_24hr: true, - dateFormat: "H:i:s", - }); -}); - // Ajax Refs $(':input[data-role="select2-ajax"]').each(function () { $(this).select2({ diff --git a/sqladmin/widgets.py b/sqladmin/widgets.py index 449a0a6b..0f7d9a17 100644 --- a/sqladmin/widgets.py +++ b/sqladmin/widgets.py @@ -10,7 +10,6 @@ "DatePickerWidget", "DateTimePickerWidget", "Select2TagsWidget", - "TimePickerWidget", ] @@ -34,16 +33,6 @@ def __call__(self, field: Field, **kwargs: Any) -> str: return super().__call__(field, **kwargs) -class TimePickerWidget(widgets.TextInput): - """ - Time picker widget. - """ - - def __call__(self, field: Field, **kwargs: Any) -> str: - kwargs.setdefault("data-role", "timepicker") - return super().__call__(field, **kwargs) - - class AjaxSelect2Widget(widgets.Select): def __init__(self, multiple: bool = False): self.multiple = multiple diff --git a/tests/test_fields.py b/tests/test_fields.py index 35f2e2b7..d5ae1fb3 100644 --- a/tests/test_fields.py +++ b/tests/test_fields.py @@ -15,7 +15,6 @@ QuerySelectMultipleField, Select2TagsField, SelectField, - TimeField, ) from tests.common import DummyData from tests.common import sync_engine as engine @@ -63,23 +62,6 @@ class F(Form): assert form.datetime.data == datetime(2021, 12, 22, 12, 30, 0, 0) -def test_time_field() -> None: - class F(Form): - time = TimeField() - - form = F() - assert 'data-role="timepicker"' in form.time() - - form = F(DummyData(time=["12:30"])) - assert form.time.data == datetime(2021, 12, 22, 12, 30, 0, 0).time() - - form = F(DummyData(time=["Invalid"])) - assert form.time.data is None - - form = F(DummyData(time=[""])) - assert form.time.data is None - - def test_json_field() -> None: class F(Form): json = JSONField()