Beispiel #1
0
    def default(self, o):
        # pylint: disable=method-hidden
        """
        Override default method from JSONEncoder to change serializer
        :param o: Object e.g. dict, list that will be serialized
        :return: serialized object
        """

        from aiida.restapi.common.config import SERIALIZER_CONFIG

        # Treat the datetime objects
        if isinstance(o, datetime):
            if 'datetime_format' in SERIALIZER_CONFIG.keys() and \
                            SERIALIZER_CONFIG[
                                'datetime_format'] != 'default':
                if SERIALIZER_CONFIG['datetime_format'] == 'asinput':
                    if o.utcoffset() is not None:
                        o = o - o.utcoffset()
                        return '-'.join([str(o.year), str(o.month).zfill(2),
                                         str(o.day).zfill(2)]) + 'T' + \
                               ':'.join([str(
                                   o.hour).zfill(2), str(o.minute).zfill(2),
                                         str(o.second).zfill(2)])

        # If not returned yet, do it in the default way
        return JSONEncoder.default(self, o)
Beispiel #2
0
    def default(self, obj):

        from aiida.restapi.common.config import SERIALIZER_CONFIG

        # Treat the datetime objects
        if isinstance(obj, datetime):
            if 'datetime_format' in SERIALIZER_CONFIG.keys() and \
                            SERIALIZER_CONFIG[
                                'datetime_format'] is not 'default':
                if SERIALIZER_CONFIG['datetime_format'] == 'asinput':
                    if obj.utcoffset() is not None:
                        obj = obj - obj.utcoffset()
                        return '-'.join([str(obj.year), str(obj.month).zfill(2),
                                         str(obj.day).zfill(2)]) + 'T' + \
                               ':'.join([str(
                                   obj.hour).zfill(2), str(obj.minute).zfill(2),
                                         str(obj.second).zfill(2)])

        # If not returned yet, do it in the default way
        return JSONEncoder.default(self, obj)