Exemplo n.º 1
0
    def test_datetime_to_iso(self):
        # with microseconds
        # naive
        pair = (
            '2014-06-19T16:40:22.293913',
            datetime(2014, 6, 19, 16, 40, 22, 293913)
        )
        self.assertEqual(pair[0], jsonify_datetime(pair[1]))

        # timezone
        pair = (
            '2014-06-19T21:55:27.934309+00:00',
            utc.localize(datetime(2014, 6, 19, 21, 55, 27, 934309)),
        )
        self.assertEqual(pair[0], jsonify_datetime(pair[1]))

        # integer seconds
        # naive
        pair = (
            '2014-06-19T16:40:22',
            datetime(2014, 6, 19, 16, 40, 22, 0)
        )
        self.assertEqual(pair[0], jsonify_datetime(pair[1]))

        # timezone
        pair = (
            '2014-06-19T21:55:27+00:00',
            utc.localize(datetime(2014, 6, 19, 21, 55, 27, 0)),
        )
        self.assertEqual(pair[0], jsonify_datetime(pair[1]))

        # timezone other than UTC
        central = timezone('US/Central')
        pair = (
            '2014-06-19T17:03:17.361077-05:00',
            central.localize(datetime(2014, 6, 19, 17, 3, 17, 361077)),
            # Due to pytz weirdness, the following has
            # incorrect tz offset info:
            # datetime(2014, 6, 19, 17, 3, 17, 361077, tzinfo=central))
        )
        self.assertEqual(
            pair[0],
            jsonify_datetime(pair[1]),
        )
    def test_datetime_to_iso(self):
        # with microseconds
        # naive
        pair = ('2014-06-19T16:40:22.293913',
                datetime(2014, 6, 19, 16, 40, 22, 293913))
        self.assertEqual(pair[0], jsonify_datetime(pair[1]))

        # timezone
        pair = (
            '2014-06-19T21:55:27.934309+00:00',
            utc.localize(datetime(2014, 6, 19, 21, 55, 27, 934309)),
        )
        self.assertEqual(pair[0], jsonify_datetime(pair[1]))

        # integer seconds
        # naive
        pair = ('2014-06-19T16:40:22', datetime(2014, 6, 19, 16, 40, 22, 0))
        self.assertEqual(pair[0], jsonify_datetime(pair[1]))

        # timezone
        pair = (
            '2014-06-19T21:55:27+00:00',
            utc.localize(datetime(2014, 6, 19, 21, 55, 27, 0)),
        )
        self.assertEqual(pair[0], jsonify_datetime(pair[1]))

        # timezone other than UTC
        central = timezone('US/Central')
        pair = (
            '2014-06-19T17:03:17.361077-05:00',
            central.localize(datetime(2014, 6, 19, 17, 3, 17, 361077)),
            # Due to pytz weirdness, the following has
            # incorrect tz offset info:
            # datetime(2014, 6, 19, 17, 3, 17, 361077, tzinfo=central))
        )
        self.assertEqual(
            pair[0],
            jsonify_datetime(pair[1]),
        )
    def as_version(self, version=Version.latest):
        """Returns a dict that has been modified based on versioning
        in order to be represented in JSON properly

        A class should overload as_version(self, version)
        implementation in order to tailor a more specific representation

        :param version: the relevant version. This allows for variance
         between versions
        :type version: str | unicode

        """
        if not isinstance(self, list):
            result = {}
            for k, v in self.iteritems() if isinstance(
                    self, dict) else vars(self).iteritems():
                k = self._props_corrected.get(k, k)
                if isinstance(v, SerializableBase):
                    result[k] = v.as_version(version)
                elif isinstance(v, list):
                    result[k] = []
                    for val in v:
                        if isinstance(val, SerializableBase):
                            result[k].append(val.as_version(version))
                        else:
                            result[k].append(val)
                elif isinstance(v, uuid.UUID):
                    result[k] = unicode(v)
                elif isinstance(v, datetime.timedelta):
                    result[k] = jsonify_timedelta(v)
                elif isinstance(v, datetime.datetime):
                    result[k] = jsonify_datetime(v)
                else:
                    result[k] = v
            result = self._filter_none(result)
        else:
            result = []
            for v in self:
                if isinstance(v, SerializableBase):
                    result.append(v.as_version(version))
                else:
                    result.append(v)
        return result
Exemplo n.º 4
0
    def as_version(self, version=Version.latest):
        """Returns a dict that has been modified based on versioning
        in order to be represented in JSON properly

        A class should overload as_version(self, version)
        implementation in order to tailor a more specific representation

        :param version: the relevant version. This allows for variance
         between versions
        :type version: str | unicode

        """
        if not isinstance(self, list):
            result = {}
            for k, v in self.iteritems() if isinstance(self, dict) else vars(self).iteritems():
                k = self._props_corrected.get(k, k)
                if isinstance(v, SerializableBase):
                    result[k] = v.as_version(version)
                elif isinstance(v, list):
                    result[k] = []
                    for val in v:
                        if isinstance(val, SerializableBase):
                            result[k].append(val.as_version(version))
                        else:
                            result[k].append(val)
                elif isinstance(v, uuid.UUID):
                    result[k] = unicode(v)
                elif isinstance(v, datetime.timedelta):
                    result[k] = jsonify_timedelta(v)
                elif isinstance(v, datetime.datetime):
                    result[k] = jsonify_datetime(v)
                else:
                    result[k] = v
            result = self._filter_none(result)
        else:
            result = []
            for v in self:
                if isinstance(v, SerializableBase):
                    result.append(v.as_version(version))
                else:
                    result.append(v)
        return result
    def test_bad_datetime_to_iso(self):
        with self.assertRaises(AssertionError):
            jsonify_datetime('2014-06-19T17:03:17.361077-05:00')

        with self.assertRaises(AssertionError):
            jsonify_datetime(0)

        with self.assertRaises(AssertionError):
            jsonify_datetime(0.0)

        with self.assertRaises(AssertionError):
            jsonify_datetime(1)

        with self.assertRaises(AssertionError):
            jsonify_datetime(1.5)

        with self.assertRaises(AssertionError):
            jsonify_datetime('2014-06-19T17:03:17.361077-05:00')

        with self.assertRaises(AssertionError):
            jsonify_datetime('PT1H')
Exemplo n.º 6
0
    def test_bad_datetime_to_iso(self):
        with self.assertRaises(AssertionError):
            jsonify_datetime('2014-06-19T17:03:17.361077-05:00')

        with self.assertRaises(AssertionError):
            jsonify_datetime(0)

        with self.assertRaises(AssertionError):
            jsonify_datetime(0.0)

        with self.assertRaises(AssertionError):
            jsonify_datetime(1)

        with self.assertRaises(AssertionError):
            jsonify_datetime(1.5)

        with self.assertRaises(AssertionError):
            jsonify_datetime('2014-06-19T17:03:17.361077-05:00')

        with self.assertRaises(AssertionError):
            jsonify_datetime('PT1H')