def test_getInputValue(self): TEST_DATE= u'2003/03/26 12:00:00' self._widget.request.form['field.foo'] = u'' self.assertRaises(WidgetInputError, self._widget.getInputValue) self._widget.request.form['field.foo'] = TEST_DATE self.assertEquals(self._widget.getInputValue(), parseDatetimetz(TEST_DATE)) self._widget.request.form['field.foo'] = u'abc' self.assertRaises(ConversionError, self._widget.getInputValue)
def _toFieldValue(self, input): if input == self._missing: return self.context.missing_value else: try: return parseDatetimetz(input) except (DateTimeError, ValueError, IndexError), v: raise ConversionError(_("Invalid datetime data"), v)
def __get__(self, inst, klass): if inst is None: return self data = inst._mapping.get(self.__name__, ()) if data: return parseDatetimetz(data[0]) else: return None
def testDates(self): self.__testQualified('Dates', [ (u'', u'1990-01-01'), (u'Created', u'1980-10-01T23:11:10-04:00'), (u'Modified', u'2002-10-01T12:09:22-04:00'), (u'Effective', u'2002-10-09T00:00:00-04:00'), (u'Expires', u'2002-10-16T00:00:00-04:00'), (u'xxx', u'2000-07-04'), (u'xxx', u'2001-12-31'), (u'foo \u1111', u'2001-12-31'), ]) from zope.app.datetimeutils import parseDatetimetz dc = self.dc self.assertEqual(dc.created, parseDatetimetz('1980-10-01T23:11:10-04:00')) self.assertEqual(dc.modified, parseDatetimetz('2002-10-01T12:09:22-04:00')) self.assertEqual(dc.effective, parseDatetimetz('2002-10-09T00:00:00-04:00')) self.assertEqual(dc.expires, parseDatetimetz('2002-10-16T00:00:00-04:00')) self.assertEqual(dc.Date(), u'1990-01-01') self.assertEqual(dc.CreationDate(), u'1980-10-01T23:11:10-04:00') self.assertEqual(dc.ModificationDate(), u'2002-10-01T12:09:22-04:00') self.assertEqual(dc.EffectiveDate(), u'2002-10-09T00:00:00-04:00') self.assertEqual(dc.ExpirationDate(), u'2002-10-16T00:00:00-04:00') dt = parseDatetimetz('2002-10-03T14:51:55-04:00') dc.modified = dt self.assertRaises(Exception, setattr, dc, 'modified', 'foo') modified = [qv[1] for qv in dc.getQualifiedDates() if qv[0] == u'Modified'] self.failIf(len(modified) != 1, "should be only one: %r" % modified) self.assertEqual(parseDatetimetz(modified[0]), dt) modified = dc.ModificationDate() self.assertEqual(parseDatetimetz(modified), dt)
def getDateForField(field, source): """Returns a datetime object for the specified field in source. Returns None if the field value cannot be converted to date. """ # look in input element first pattern = '<input .* name="field.%s".* value="(.*)".*>' % field m = re.search(pattern, source) if m is None: # look in a select element pattern = '<select .* name="field.%s".*>.*' \ '<option value="(.*)" selected>*.</select>' % field m = re.search(pattern, source, re.DOTALL) if m is None: return None try: return parseDatetimetz(m.group(1)) except: # ignore specifics return None
def testParseDatetimetz(self): from datetime import datetime from zope.app.datetimeutils import parseDatetimetz, tzinfo self.assertEqual(parseDatetimetz('1999-12-31T01:02:03.037-00:30'), datetime(1999, 12, 31, 1, 2, 3, 37000, tzinfo(-30)))