Skip to content

Commit

Permalink
Merge pull request #154 from plone/petschki-date-formatter
Browse files Browse the repository at this point in the history
  • Loading branch information
petschki authored Aug 18, 2022
2 parents dfbfcfb + 0400f0a commit b0ab073
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 1 deletion.
2 changes: 2 additions & 0 deletions news/154.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
Customizable DateWidget formatter length.
[petschki]
42 changes: 42 additions & 0 deletions plone/app/z3cform/tests/test_widgets.py
Original file line number Diff line number Diff line change
Expand Up @@ -263,6 +263,27 @@ def test_fieldwidget(self):
self.assertIs(widget.field, field)
self.assertIs(widget.request, request)

def test_dateformatter(self):
self.widget.value = "2022-08-17"
self.assertIn(" value=\"2022-08-17\" ", self.widget.render())

self.widget.mode = "display"
self.assertEqual("8/17/22", self.widget.render())

self.widget._formater_length = "medium"
self.assertEqual("Aug 17, 2022", self.widget.render())

self.widget._formater_length = "long"
self.assertEqual("August 17, 2022", self.widget.render())

self.widget._formater_length = "full"
self.assertEqual("Wednesday, August 17, 2022", self.widget.render())

# unknown formater length
self.widget._formater_length = "foo"
with self.assertRaises(ValueError):
self.widget.render()


class DatetimeWidgetTests(unittest.TestCase):
def setUp(self):
Expand Down Expand Up @@ -417,6 +438,27 @@ def test_fieldwidget(self):
self.assertIs(widget.field, field)
self.assertIs(widget.request, request)

def test_datetimeformatter(self):
self.widget.value = "2022-08-17T12:00"
self.assertIn(" value=\"2022-08-17T12:00\" ", self.widget.render())

self.widget.mode = "display"
self.assertEqual("8/17/22 12:00 PM", self.widget.render())

self.widget._formater_length = "medium"
self.assertEqual("Aug 17, 2022 12:00:00 PM", self.widget.render())

self.widget._formater_length = "long"
self.assertEqual("August 17, 2022 12:00:00 PM +000", self.widget.render())

self.widget._formater_length = "full"
self.assertEqual("Wednesday, August 17, 2022 12:00:00 PM +000", self.widget.render())

# unknown formater length
self.widget._formater_length = "foo"
with self.assertRaises(ValueError):
self.widget.render()


class TimeWidgetTests(unittest.TestCase):
def setUp(self):
Expand Down
3 changes: 2 additions & 1 deletion plone/app/z3cform/widget.py
Original file line number Diff line number Diff line change
Expand Up @@ -142,6 +142,7 @@ class DateWidget(BaseWidget, z3cform_TextWidget):
_base_type = "date"
_converter = DateWidgetConverter
_formater = "date"
_formater_length = "short"

default_timezone = None
default_time = "00:00:00"
Expand Down Expand Up @@ -200,7 +201,7 @@ def render(self):

formatter = self.request.locale.dates.getFormatter(
self._formater,
"short",
self._formater_length,
)
return formatter.format(field_value)

Expand Down

0 comments on commit b0ab073

Please sign in to comment.