Skip to content

Commit c7342d2

Browse files
committed
Summary: Add specialized DateField for triggering Bootstrap datepicker
- Legacy-Id: 8712
1 parent 6a7f3d9 commit c7342d2

1 file changed

Lines changed: 28 additions & 0 deletions

File tree

ietf/utils/fields.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,3 +23,31 @@ def validate(self, value):
2323

2424
for email in value:
2525
validate_email(email)
26+
27+
def yyyymmdd_to_strftime_format(fmt):
28+
return (fmt
29+
.replace("yyyy", "%Y")
30+
.replace("yy", "%y")
31+
.replace("mm", "%m")
32+
.replace("m", "%-m")
33+
.replace("MM", "%B")
34+
.replace("M", "%b")
35+
.replace("dd", "%d")
36+
.replace("d", "%-d")
37+
.replace("MM", "%A")
38+
.replace("M", "%a")
39+
)
40+
41+
class DatepickerDateField(forms.DateField):
42+
"""DateField with some glue for triggering JS Bootstrap datepicker."""
43+
44+
def __init__(self, date_format, picker_settings={}, *args, **kwargs):
45+
strftime_format = yyyymmdd_to_strftime_format(date_format)
46+
kwargs["input_formats"] = [strftime_format]
47+
kwargs["widget"] = forms.DateInput(format=strftime_format)
48+
super(DatepickerDateField, self).__init__(*args, **kwargs)
49+
50+
self.widget.attrs["data-provide"] = "datepicker"
51+
self.widget.attrs["data-date-format"] = date_format
52+
for k, v in picker_settings.iteritems():
53+
self.widget.attrs["data-date-%s" % k] = v

0 commit comments

Comments
 (0)