Initial commit
This commit is contained in:
165
env/lib/python3.10/site-packages/wagtail/admin/widgets/datetime.py
vendored
Normal file
165
env/lib/python3.10/site-packages/wagtail/admin/widgets/datetime.py
vendored
Normal file
@@ -0,0 +1,165 @@
|
||||
import json
|
||||
|
||||
from django import forms
|
||||
from django.conf import settings
|
||||
from django.forms import widgets
|
||||
from django.utils.formats import get_format
|
||||
|
||||
from wagtail.admin.datetimepicker import to_datetimepicker_format
|
||||
from wagtail.admin.staticfiles import versioned_static
|
||||
from wagtail.telepath import register
|
||||
from wagtail.widget_adapters import WidgetAdapter
|
||||
|
||||
DEFAULT_DATE_FORMAT = "%Y-%m-%d"
|
||||
DEFAULT_DATETIME_FORMAT = "%Y-%m-%d %H:%M"
|
||||
DEFAULT_TIME_FORMAT = "%H:%M"
|
||||
|
||||
|
||||
class AdminDateInput(widgets.DateInput):
|
||||
template_name = "wagtailadmin/widgets/date_input.html"
|
||||
|
||||
def __init__(self, attrs=None, format=None):
|
||||
default_attrs = {"autocomplete": "off"}
|
||||
fmt = format
|
||||
if attrs:
|
||||
default_attrs.update(attrs)
|
||||
if fmt is None:
|
||||
fmt = getattr(settings, "WAGTAIL_DATE_FORMAT", DEFAULT_DATE_FORMAT)
|
||||
self.js_format = to_datetimepicker_format(fmt)
|
||||
super().__init__(attrs=default_attrs, format=fmt)
|
||||
|
||||
def get_config(self):
|
||||
return {
|
||||
"dayOfWeekStart": get_format("FIRST_DAY_OF_WEEK"),
|
||||
"format": self.js_format,
|
||||
}
|
||||
|
||||
def get_context(self, name, value, attrs):
|
||||
context = super().get_context(name, value, attrs)
|
||||
|
||||
context["widget"]["config_json"] = json.dumps(self.get_config())
|
||||
|
||||
return context
|
||||
|
||||
@property
|
||||
def media(self):
|
||||
return forms.Media(
|
||||
js=[
|
||||
versioned_static("wagtailadmin/js/date-time-chooser.js"),
|
||||
]
|
||||
)
|
||||
|
||||
|
||||
class AdminDateInputAdapter(WidgetAdapter):
|
||||
js_constructor = "wagtail.widgets.AdminDateInput"
|
||||
|
||||
def js_args(self, widget):
|
||||
return [
|
||||
widget.get_config(),
|
||||
]
|
||||
|
||||
|
||||
register(AdminDateInputAdapter(), AdminDateInput)
|
||||
|
||||
|
||||
class AdminTimeInput(widgets.TimeInput):
|
||||
template_name = "wagtailadmin/widgets/time_input.html"
|
||||
|
||||
def __init__(self, attrs=None, format=None):
|
||||
default_attrs = {"autocomplete": "off"}
|
||||
if attrs:
|
||||
default_attrs.update(attrs)
|
||||
fmt = format
|
||||
if fmt is None:
|
||||
fmt = getattr(settings, "WAGTAIL_TIME_FORMAT", DEFAULT_TIME_FORMAT)
|
||||
self.js_format = to_datetimepicker_format(fmt)
|
||||
super().__init__(attrs=default_attrs, format=fmt)
|
||||
|
||||
def get_config(self):
|
||||
return {"format": self.js_format, "formatTime": self.js_format}
|
||||
|
||||
def get_context(self, name, value, attrs):
|
||||
context = super().get_context(name, value, attrs)
|
||||
context["widget"]["config_json"] = json.dumps(self.get_config())
|
||||
return context
|
||||
|
||||
@property
|
||||
def media(self):
|
||||
return forms.Media(
|
||||
js=[
|
||||
versioned_static("wagtailadmin/js/date-time-chooser.js"),
|
||||
]
|
||||
)
|
||||
|
||||
|
||||
class AdminTimeInputAdapter(WidgetAdapter):
|
||||
js_constructor = "wagtail.widgets.AdminTimeInput"
|
||||
|
||||
def js_args(self, widget):
|
||||
return [
|
||||
widget.get_config(),
|
||||
]
|
||||
|
||||
|
||||
register(AdminTimeInputAdapter(), AdminTimeInput)
|
||||
|
||||
|
||||
class AdminDateTimeInput(widgets.DateTimeInput):
|
||||
template_name = "wagtailadmin/widgets/datetime_input.html"
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
attrs=None,
|
||||
format=None,
|
||||
time_format=None,
|
||||
js_overlay_parent_selector="body",
|
||||
):
|
||||
default_attrs = {"autocomplete": "off"}
|
||||
fmt = format
|
||||
if attrs:
|
||||
default_attrs.update(attrs)
|
||||
if fmt is None:
|
||||
fmt = getattr(settings, "WAGTAIL_DATETIME_FORMAT", DEFAULT_DATETIME_FORMAT)
|
||||
time_fmt = time_format
|
||||
if time_fmt is None:
|
||||
time_fmt = getattr(settings, "WAGTAIL_TIME_FORMAT", DEFAULT_TIME_FORMAT)
|
||||
self.js_format = to_datetimepicker_format(fmt)
|
||||
self.js_time_format = to_datetimepicker_format(time_fmt)
|
||||
self.js_overlay_parent_selector = js_overlay_parent_selector
|
||||
super().__init__(attrs=default_attrs, format=fmt)
|
||||
|
||||
def get_config(self):
|
||||
return {
|
||||
"dayOfWeekStart": get_format("FIRST_DAY_OF_WEEK"),
|
||||
"format": self.js_format,
|
||||
"formatTime": self.js_time_format,
|
||||
# The parentID option actually takes a CSS selector instead of an ID
|
||||
"parentID": self.js_overlay_parent_selector,
|
||||
}
|
||||
|
||||
def get_context(self, name, value, attrs):
|
||||
context = super().get_context(name, value, attrs)
|
||||
|
||||
context["widget"]["config_json"] = json.dumps(self.get_config())
|
||||
|
||||
return context
|
||||
|
||||
@property
|
||||
def media(self):
|
||||
return forms.Media(
|
||||
js=[
|
||||
versioned_static("wagtailadmin/js/date-time-chooser.js"),
|
||||
]
|
||||
)
|
||||
|
||||
|
||||
class AdminDateTimeInputAdapter(WidgetAdapter):
|
||||
js_constructor = "wagtail.widgets.AdminDateTimeInput"
|
||||
|
||||
def js_args(self, widget):
|
||||
return [
|
||||
widget.get_config(),
|
||||
]
|
||||
|
||||
|
||||
register(AdminDateTimeInputAdapter(), AdminDateTimeInput)
|
||||
Reference in New Issue
Block a user