def setUp(self): from plone.app.widgets.dx import DatetimeWidget self.request = TestRequest(environ={'HTTP_ACCEPT_LANGUAGE': 'en'}) self.field = Datetime(__name__='datetimefield') self.widget = DatetimeWidget(self.request) self.widget.pattern_options = {'date': {'firstDay': 0}}
class DatetimeWidgetTests(unittest.TestCase): def setUp(self): from plone.app.widgets.dx import DatetimeWidget self.request = TestRequest(environ={'HTTP_ACCEPT_LANGUAGE': 'en'}) self.field = Datetime(__name__='datetimefield') self.widget = DatetimeWidget(self.request) def test_widget(self): self.assertEqual( self.widget._widget_args(), { 'name': None, 'pattern': 'pickadate', 'pattern_options': {}, 'request': self.request } ) def test_data_converter(self): from plone.app.widgets.dx import DatetimeWidgetConverter converter = DatetimeWidgetConverter(self.field, self.widget) self.assertEqual( converter.toFieldValue(''), converter.field.missing_value, ) self.assertEqual( converter.toFieldValue('2000-10-30 15:40'), datetime(2000, 10, 30, 15, 40), ) self.assertEqual( converter.toFieldValue('21-10-30 15:40'), datetime(21, 10, 30, 15, 40), ) self.assertEqual( converter.toWidgetValue(converter.field.missing_value), '', ) self.assertEqual( converter.toWidgetValue(datetime(2000, 10, 30, 15, 40)), '2000-10-30 15:40', ) self.assertEqual( converter.toWidgetValue(datetime(21, 10, 30, 15, 40)), '21-10-30 15:40', )
class DatetimeWidgetTests(unittest.TestCase): def setUp(self): from plone.app.widgets.dx import DatetimeWidget self.request = TestRequest(environ={'HTTP_ACCEPT_LANGUAGE': 'en'}) self.field = Datetime(__name__='datetimefield') self.widget = DatetimeWidget(self.request) self.widget.pattern_options = {'date': {'firstDay': 0}} def test_widget(self): self.assertEqual( { 'pattern': 'pickadate', 'value': u'', 'name': None, 'pattern_options': { 'date': { 'firstDay': 0, 'min': [1914, 1, 1], 'max': [2034, 1, 1], 'clear': u'Clear', 'format': 'mmmm d, yyyy', 'monthsFull': [u'January', u'February', u'March', u'April', u'May', u'June', u'July', u'August', u'September', u'October', u'November', u'December'], 'weekdaysShort': [u'Sun', u'Mon', u'Tue', u'Wed', u'Thu', u'Fri', u'Sat'], 'weekdaysFull': [u'Sunday', u'Monday', u'Tuesday', u'Wednesday', u'Thursday', u'Friday', u'Saturday'], 'today': u'Today', 'selectYears': 200, 'placeholder': u'Enter date...', 'monthsShort': [u'Jan', u'Feb', u'Mar', u'Apr', u'May', u'Jun', u'Jul', u'Aug', u'Sep', u'Oct', u'Nov', u'Dec'] }, 'time': { 'placeholder': u'Enter time...', 'today': u'Today', 'format': 'h:i a' } } }, self.widget._base_args(), ) def test_data_converter(self): from plone.app.widgets.dx import DatetimeWidgetConverter converter = DatetimeWidgetConverter(self.field, self.widget) self.assertEqual( converter.toFieldValue(''), converter.field.missing_value, ) self.assertEqual( converter.toFieldValue('2000-10-30 15:40'), datetime(2000, 10, 30, 15, 40), ) self.assertEqual( converter.toFieldValue('21-10-30 15:40'), datetime(21, 10, 30, 15, 40), ) self.assertEqual( converter.toWidgetValue(converter.field.missing_value), '', ) self.assertEqual( converter.toWidgetValue(datetime(2000, 10, 30, 15, 40)), '2000-10-30 15:40', ) self.assertEqual( converter.toWidgetValue(datetime(21, 10, 30, 15, 40)), '21-10-30 15:40', ) def test_data_converter_timezone(self): from plone.app.widgets.dx import DatetimeWidgetConverter context = Mock() # Test for previously set datetime, without tzinfo and no timezone on # context. # Should not apply a timezone to the field value. dt = datetime(2013, 11, 13, 10, 20) setattr(context, self.field.getName(), dt) self.widget.context = context converter = DatetimeWidgetConverter(self.field, self.widget) self.assertEqual( converter.toFieldValue('2013-11-13 10:20'), datetime(2013, 11, 13, 10, 20), ) # Test for previously set datetime, with tzinfo but no timezone on # context. # Should apply UTZ zone to field value, to be able to be compared with # the timezone aware datetime from the context. import pytz nl = pytz.timezone('Europe/Amsterdam') dt = nl.localize(datetime(2013, 11, 13, 10, 20)) setattr(context, self.field.getName(), dt) context.timezone = None self.widget.context = context converter = DatetimeWidgetConverter(self.field, self.widget) self.assertEqual( converter.toFieldValue('2013-11-13 10:20'), pytz.utc.localize(datetime(2013, 11, 13, 10, 20)), ) # Test for previously set datetime, with tzinfo and timezone one # context. # Should apply the zone based on "timezone" value to field value, to be # able to be CORRECTLY compared with the timezone aware datetime from # the context. nl = pytz.timezone('Europe/Amsterdam') dt = nl.localize(datetime(2013, 11, 13, 10, 20)) setattr(context, self.field.getName(), dt) context.timezone = "Europe/Amsterdam" self.widget.context = context converter = DatetimeWidgetConverter(self.field, self.widget) self.assertEqual( converter.toFieldValue('2013-11-13 10:20'), nl.localize(datetime(2013, 11, 13, 10, 20)), ) # cleanup self.widget.context = None def test_fieldwidget(self): from plone.app.widgets.dx import DatetimeWidget from plone.app.widgets.dx import DatetimeFieldWidget field = Mock(__name__='field', title=u'', required=True) request = Mock() widget = DatetimeFieldWidget(field, request) self.assertTrue(isinstance(widget, DatetimeWidget)) self.assertIs(widget.field, field) self.assertIs(widget.request, request)
def ExpirationDateFieldWidget(field, request): widget = FieldWidget(field, DatetimeWidget(request)) widget.pattern_options.setdefault('date', {}) widget.pattern_options['date']['firstDay'] = first_weekday() return widget
class DatetimeWidgetTests(unittest.TestCase): def setUp(self): from plone.app.widgets.dx import DatetimeWidget self.request = TestRequest(environ={'HTTP_ACCEPT_LANGUAGE': 'en'}) self.field = Datetime(__name__='datetimefield') self.widget = DatetimeWidget(self.request) self.widget.pattern_options = {'date': {'firstDay': 0}} def test_widget(self): self.assertEqual( { 'pattern': 'pickadate', 'value': u'', 'name': None, 'pattern_options': { 'date': { 'firstDay': 0, 'min': [1914, 1, 1], 'max': [2034, 1, 1], 'clear': u'Clear', 'format': 'mmmm d, yyyy', 'monthsFull': [u'January', u'February', u'March', u'April', u'May', u'June', u'July', u'August', u'September', u'October', u'November', u'December'], 'weekdaysShort': [u'Sun', u'Mon', u'Tue', u'Wed', u'Thu', u'Fri', u'Sat'], 'weekdaysFull': [u'Sunday', u'Monday', u'Tuesday', u'Wednesday', u'Thursday', u'Friday', u'Saturday'], 'today': u'Today', 'selectYears': 200, 'placeholder': u'Enter date...', 'monthsShort': [u'Jan', u'Feb', u'Mar', u'Apr', u'May', u'Jun', u'Jul', u'Aug', u'Sep', u'Oct', u'Nov', u'Dec'] }, 'time': { 'placeholder': u'Enter time...', 'today': u'Today', 'format': 'h:i a' } } }, self.widget._base_args(), ) def test_data_converter(self): from plone.app.widgets.dx import DatetimeWidgetConverter converter = DatetimeWidgetConverter(self.field, self.widget) self.assertEqual( converter.toFieldValue(''), converter.field.missing_value, ) self.assertEqual( converter.toFieldValue('2000-10-30 15:40'), datetime(2000, 10, 30, 15, 40), ) self.assertEqual( converter.toFieldValue('21-10-30 15:40'), datetime(21, 10, 30, 15, 40), ) self.assertEqual( converter.toWidgetValue(converter.field.missing_value), '', ) self.assertEqual( converter.toWidgetValue(datetime(2000, 10, 30, 15, 40)), '2000-10-30 15:40', ) self.assertEqual( converter.toWidgetValue(datetime(21, 10, 30, 15, 40)), '21-10-30 15:40', ) def test_data_converter__no_timezone(self): """When no timezone is set, don't apply one. """ from plone.app.widgets.dx import DatetimeWidgetConverter context = Mock() dt = datetime(2013, 11, 13, 10, 20) setattr(context, self.field.getName(), dt) self.widget.context = context self.widget.default_timezone = None converter = DatetimeWidgetConverter(self.field, self.widget) self.assertEqual( converter.toFieldValue('2013-11-13 10:20'), datetime(2013, 11, 13, 10, 20), ) # cleanup self.widget.context = None self.widget.default_timezone = None def test_data_converter__timezone_id(self): """When a (pytz) timezone id is set, use that. """ from plone.app.widgets.dx import DatetimeWidgetConverter context = Mock() dt = datetime(2013, 11, 13, 10, 20) setattr(context, self.field.getName(), dt) self.widget.context = context self.widget.default_timezone = 'Europe/Amsterdam' tz = pytz.timezone('Europe/Amsterdam') converter = DatetimeWidgetConverter(self.field, self.widget) self.assertEqual( converter.toFieldValue('2013-11-13 10:20'), tz.localize(datetime(2013, 11, 13, 10, 20)), ) # cleanup self.widget.context = None self.widget.default_timezone = None def test_data_converter__timezone_callback(self): """When a timezone callback is set, returning a (pytz) timezone id, use that. """ from plone.app.widgets.dx import DatetimeWidgetConverter context = Mock() dt = datetime(2013, 11, 13, 10, 20) setattr(context, self.field.getName(), dt) self.widget.context = context self.widget.default_timezone = lambda(context): 'Europe/Amsterdam' tz = pytz.timezone('Europe/Amsterdam') converter = DatetimeWidgetConverter(self.field, self.widget) self.assertEqual( converter.toFieldValue('2013-11-13 10:20'), tz.localize(datetime(2013, 11, 13, 10, 20)), ) # cleanup self.widget.context = None self.widget.default_timezone = None def test_fieldwidget(self): from plone.app.widgets.dx import DatetimeWidget from plone.app.widgets.dx import DatetimeFieldWidget field = Mock(__name__='field', title=u'', required=True) request = Mock() widget = DatetimeFieldWidget(field, request) self.assertTrue(isinstance(widget, DatetimeWidget)) self.assertIs(widget.field, field) self.assertIs(widget.request, request)
def StartDateFieldWidget(field, request): return FieldWidget(field, DatetimeWidget(request))
def EndDateFieldWidget(field, request): return FieldWidget(field, DatetimeWidget(request))
class DatetimeWidgetTests(unittest.TestCase): def setUp(self): from plone.app.widgets.dx import DatetimeWidget self.request = TestRequest(environ={'HTTP_ACCEPT_LANGUAGE': 'en'}) self.field = Datetime(__name__='datetimefield') self.widget = DatetimeWidget(self.request) def test_widget(self): self.assertEqual( { 'pattern': 'pickadate', 'value': u'', 'name': None, 'pattern_options': { 'date': { 'min': [1913, 1, 1], 'max': [2033, 1, 1], 'clear': u'Clear', 'format': 'mmmm d, yyyy', 'monthsFull': [u'January', u'February', u'March', u'April', u'May', u'June', u'July', u'August', u'September', u'October', u'November', u'December'], 'weekdaysShort': [u'Sun', u'Mon', u'Tue', u'Wed', u'Thu', u'Fri', u'Sat'], 'weekdaysFull': [u'Sunday', u'Monday', u'Tuesday', u'Wednesday', u'Thursday', u'Friday', u'Saturday'], 'today': u'Today', 'selectYears': 200, 'placeholder': u'Enter date...', 'monthsShort': [u'Jan', u'Feb', u'Mar', u'Apr', u'May', u'Jun', u'Jul', u'Aug', u'Sep', u'Oct', u'Nov', u'Dec'] }, 'time': { 'placeholder': u'Enter time...', 'today': u'Today', 'format': 'h:i a' } } }, self.widget._base_args(), ) def test_data_converter(self): from plone.app.widgets.dx import DatetimeWidgetConverter converter = DatetimeWidgetConverter(self.field, self.widget) self.assertEqual( converter.toFieldValue(''), converter.field.missing_value, ) self.assertEqual( converter.toFieldValue('2000-10-30 15:40'), datetime(2000, 10, 30, 15, 40), ) self.assertEqual( converter.toFieldValue('21-10-30 15:40'), datetime(21, 10, 30, 15, 40), ) self.assertEqual( converter.toWidgetValue(converter.field.missing_value), '', ) self.assertEqual( converter.toWidgetValue(datetime(2000, 10, 30, 15, 40)), '2000-10-30 15:40', ) self.assertEqual( converter.toWidgetValue(datetime(21, 10, 30, 15, 40)), '21-10-30 15:40', )
class DatetimeWidgetTests(unittest.TestCase): def setUp(self): from plone.app.widgets.dx import DatetimeWidget self.request = TestRequest(environ={'HTTP_ACCEPT_LANGUAGE': 'en'}) self.field = Datetime(__name__='datetimefield') self.widget = DatetimeWidget(self.request) self.widget.pattern_options = {'date': {'firstDay': 0}} def test_widget(self): self.assertEqual( { 'pattern': 'pickadate', 'value': u'', 'name': None, 'pattern_options': { 'date': { 'firstDay': 0, 'min': [1914, 1, 1], 'max': [2034, 1, 1], 'clear': u'Clear', 'format': 'mmmm d, yyyy', 'monthsFull': [ u'January', u'February', u'March', u'April', u'May', u'June', u'July', u'August', u'September', u'October', u'November', u'December' ], 'weekdaysShort': [ u'Sun', u'Mon', u'Tue', u'Wed', u'Thu', u'Fri', u'Sat' ], 'weekdaysFull': [ u'Sunday', u'Monday', u'Tuesday', u'Wednesday', u'Thursday', u'Friday', u'Saturday' ], 'today': u'Today', 'selectYears': 200, 'placeholder': u'Enter date...', 'monthsShort': [ u'Jan', u'Feb', u'Mar', u'Apr', u'May', u'Jun', u'Jul', u'Aug', u'Sep', u'Oct', u'Nov', u'Dec' ] }, 'time': { 'placeholder': u'Enter time...', 'today': u'Today', 'format': 'h:i a' } } }, self.widget._base_args(), ) def test_data_converter(self): from plone.app.widgets.dx import DatetimeWidgetConverter converter = DatetimeWidgetConverter(self.field, self.widget) self.assertEqual( converter.toFieldValue(''), converter.field.missing_value, ) self.assertEqual( converter.toFieldValue('2000-10-30 15:40'), datetime(2000, 10, 30, 15, 40), ) self.assertEqual( converter.toFieldValue('21-10-30 15:40'), datetime(21, 10, 30, 15, 40), ) self.assertEqual( converter.toWidgetValue(converter.field.missing_value), '', ) self.assertEqual( converter.toWidgetValue(datetime(2000, 10, 30, 15, 40)), '2000-10-30 15:40', ) self.assertEqual( converter.toWidgetValue(datetime(21, 10, 30, 15, 40)), '21-10-30 15:40', ) def test_data_converter__no_timezone(self): """When no timezone is set, don't apply one. """ from plone.app.widgets.dx import DatetimeWidgetConverter context = Mock() dt = datetime(2013, 11, 13, 10, 20) setattr(context, self.field.getName(), dt) self.widget.context = context self.widget.default_timezone = None converter = DatetimeWidgetConverter(self.field, self.widget) self.assertEqual( converter.toFieldValue('2013-11-13 10:20'), datetime(2013, 11, 13, 10, 20), ) # cleanup self.widget.context = None self.widget.default_timezone = None def test_data_converter__timezone_id(self): """When a (pytz) timezone id is set, use that. """ from plone.app.widgets.dx import DatetimeWidgetConverter context = Mock() dt = datetime(2013, 11, 13, 10, 20) setattr(context, self.field.getName(), dt) self.widget.context = context self.widget.default_timezone = 'Europe/Amsterdam' tz = pytz.timezone('Europe/Amsterdam') converter = DatetimeWidgetConverter(self.field, self.widget) self.assertEqual( converter.toFieldValue('2013-11-13 10:20'), tz.localize(datetime(2013, 11, 13, 10, 20)), ) # cleanup self.widget.context = None self.widget.default_timezone = None def test_data_converter__timezone_callback(self): """When a timezone callback is set, returning a (pytz) timezone id, use that. """ from plone.app.widgets.dx import DatetimeWidgetConverter context = Mock() dt = datetime(2013, 11, 13, 10, 20) setattr(context, self.field.getName(), dt) self.widget.context = context self.widget.default_timezone = lambda (context): 'Europe/Amsterdam' tz = pytz.timezone('Europe/Amsterdam') converter = DatetimeWidgetConverter(self.field, self.widget) self.assertEqual( converter.toFieldValue('2013-11-13 10:20'), tz.localize(datetime(2013, 11, 13, 10, 20)), ) # cleanup self.widget.context = None self.widget.default_timezone = None def test_fieldwidget(self): from plone.app.widgets.dx import DatetimeWidget from plone.app.widgets.dx import DatetimeFieldWidget field = Mock(__name__='field', title=u'', required=True) request = Mock() widget = DatetimeFieldWidget(field, request) self.assertTrue(isinstance(widget, DatetimeWidget)) self.assertIs(widget.field, field) self.assertIs(widget.request, request)
def ExpirationDateFieldWidget(field, request): widget = FieldWidget(field, DatetimeWidget(request)) return widget
def EffectiveDateFieldWidget(field, request): widget = FieldWidget(field, DatetimeWidget(request)) return widget
def EndDateFieldWidget(field, request): widget = FieldWidget(field, DatetimeWidget(request)) widget.default_timezone = default_timezone return widget