def setUp(self): from plone.app.z3cform.widget 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.z3cform.widget 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}, 'time': {'interval': 15} } def test_widget(self): current_year = datetime.today().year self.assertEqual( { 'pattern': 'pickadate', 'value': u'', 'name': None, 'pattern_options': { 'date': { 'firstDay': 0, 'min': [current_year - 100, 1, 1], 'max': [current_year + 20, 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', 'interval': 15 } } }, self.widget._base_args(), ) def test_data_converter(self): from plone.app.z3cform.widget 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.z3cform.widget 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.z3cform.widget 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.z3cform.widget 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.z3cform.widget import DatetimeWidget from plone.app.z3cform.widget 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)
class DatetimeWidgetTests(unittest.TestCase): def setUp(self): from plone.app.z3cform.widget 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): current_year = datetime.today().year self.assertEqual( { 'pattern': 'pickadate', 'value': u'', 'name': None, 'pattern_options': { 'date': { 'firstDay': 0, 'min': [current_year - 100, 1, 1], 'max': [current_year + 20, 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.z3cform.widget 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.z3cform.widget 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.z3cform.widget 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.z3cform.widget 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.z3cform.widget import DatetimeWidget from plone.app.z3cform.widget 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 EndDateFieldWidget(field, request): widget = FieldWidget(field, DatetimeWidget(request)) widget.default_timezone = default_timezone return widget