def test_deserialize_time(self): value = '14:30:59' t = serialization.deserialize_time(value) expected = timezone.make_aware( datetime.datetime(1, 1, 1, 14, 30, 59) ).time() self.assertEqual(expected, t)
def test_deserialize_already_a_time(self): value = timezone.make_aware(datetime.datetime(1, 1, 1, 14, 30, 59)).time() expected = timezone.make_aware(datetime.datetime(1, 1, 1, 14, 30, 59)).time() self.assertEqual(expected, serialization.deserialize_time(value))
def test_deserialize_already_a_time(self): value = timezone.make_aware( datetime.datetime(1, 1, 1, 14, 30, 59) ).time() expected = timezone.make_aware( datetime.datetime(1, 1, 1, 14, 30, 59) ).time() self.assertEqual(expected, serialization.deserialize_time(value))
def update_from_dict(self, data, user, force=False, fields=None): logging.info("updating {0} with {1} for {2}".format( self.__class__.__name__, data, user )) if fields is None: fields = set(self._get_fieldnames_to_serialize()) if self.consistency_token and not force: try: consistency_token = data.pop('consistency_token') except KeyError: msg = 'Missing field (consistency_token) for {}' raise exceptions.MissingConsistencyTokenError( msg.format(self.__class__.__name__) ) if consistency_token != self.consistency_token: raise exceptions.ConsistencyError post_save = [] unknown_fields = set(data.keys()) - fields if unknown_fields: raise exceptions.APIError( 'Unexpected fieldname(s): %s' % list(unknown_fields)) for name in fields: value = data.get(name, None) if name == 'consistency_token': continue # shouldn't be needed - Javascripts bug? setter = getattr(self, 'set_' + name, None) if setter is not None: setter(value, user, data) else: if name in data: field_type = self._get_field_type(name) if field_type == models.fields.related.ManyToManyField: post_save.append( functools.partial(self.save_many_to_many, name, value, field_type)) else: DateTimeField = models.fields.DateTimeField if value and field_type == models.fields.DateField: value = serialization.deserialize_date(value) elif value and field_type == DateTimeField: value = serialization.deserialize_datetime(value) elif value and field_type == models.fields.TimeField: value = serialization.deserialize_time(value) setattr(self, name, value) self.set_consistency_token() self.save() for some_func in post_save: some_func()
def test_deserialize_invalid_time(self): with self.assertRaises(ValueError): value = '14::30::59' serialization.deserialize_time(value)