Пример #1
0
 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)
Пример #2
0
    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))
Пример #4
0
    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()
Пример #5
0
 def test_deserialize_invalid_time(self):
     with self.assertRaises(ValueError):
         value = '14::30::59'
         serialization.deserialize_time(value)