Skip to content
This repository has been archived by the owner on Aug 2, 2019. It is now read-only.

Commit

Permalink
Add datetime field type (ref #51)
Browse files Browse the repository at this point in the history
  • Loading branch information
leplatrem committed May 30, 2013
1 parent c65fe35 commit 3870569
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 2 deletions.
11 changes: 9 additions & 2 deletions daybed/schemas/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,15 +14,16 @@
Boolean,
Regex,
Email,
Date
Date,
DateTime
)


__all__ = ['registry', 'TypeField',
'DefinitionValidator', 'SchemaValidator',
'IntField', 'StringField', 'RangeField',
'RegexField', 'EmailField', 'URLField',
'DecimalField', 'DateField']
'DecimalField', 'DateField', 'DateTimeField']


class AlreadyRegisteredError(Exception):
Expand Down Expand Up @@ -240,3 +241,9 @@ def validation(cls, **kwargs):
class DateField(TypeField):
"""A date field (ISO_8601, yyyy-mm-dd)."""
node = Date


@registry.add('datetime')
class DateTimeField(TypeField):
"""A date time field (ISO_8601, yyyy-mm-ddTHH:MMZ)."""
node = DateTime
19 changes: 19 additions & 0 deletions daybed/tests/test_types.py
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,25 @@ def test_date(self):
self.assertRaises(colander.Invalid, validator.deserialize, '2012-04-31')
self.assertRaises(colander.Invalid, validator.deserialize, '2012-04-30T13:37Z')

def test_datetime(self):
schema = schemas.DateField.definition()
definition = schema.deserialize(
{'description': 'First branch',
'name': 'branch',
'type': 'datetime'})

validator = schemas.DateTimeField.validation(**definition)
self.assertEquals(datetime.datetime(2012, 4, 16, 13, 45, 12, 0, colander.iso8601.UTC),
validator.deserialize('2012-04-16T13:45:12'))
self.assertEquals(datetime.datetime(2012, 4, 16, 13, 45, 12, 0, colander.iso8601.UTC),
validator.deserialize('2012-04-16T13:45:12Z'))
# Without time
self.assertEquals(datetime.datetime(2012, 4, 16, 0, 0, 0, 0, colander.iso8601.UTC),
validator.deserialize('2012-04-16'))
self.assertRaises(colander.Invalid, validator.deserialize, '2012/04/16 13H45')
self.assertRaises(colander.Invalid, validator.deserialize, '2012-04-30T25:37Z')
self.assertRaises(colander.Invalid, validator.deserialize, '2012-04-30T13:60Z')

def test_point(self):
schema = schemas.PointField.definition()
definition = schema.deserialize(
Expand Down

0 comments on commit 3870569

Please sign in to comment.