示例#1
0
    def default(self, obj):

        """
        Enable serialisation of a ValuesQuerySet

        This function must return a serializable object for any object type it
        receives. ValuesQuerySet will return dictionaries when used as an
        iterable. Here we differentiate between a ValuesQuerySet with one or
        more items and return either a dictionary/list of dictionaries.

        You can test ajax queries from the terminal with:
        $ curl -H 'X-Requested-With: XMLHttpRequest' <url>

        Serialising querysets - returns a multiple item list
        if isinstance(obj, QuerySet):
            return json.loads(serializers.serialize('json', obj))
        
        Serialising models - returns a single item list
        if isinstance(obj, models.Model):
            obj = [obj] # Iterable required
            return json.loads(serializers.serialize("json", obj))[0]
        """

        if isinstance(obj, ValuesQuerySet):
            if len(obj) > 0:
                return list(obj)
            else:
                return list(obj)[0]
        return DjangoJSONEncoder.default(self, obj)
示例#2
0
 def default(self, obj):
     if (isinstance(
             obj,
         (date, list, dict, str, int, float, bool, type(None), Decimal))
             or isinstance(obj, six.string_types)):
         return DjangoJSONEncoder.default(self, obj)
     return '{}'.format(type(obj).__name__)
示例#3
0
 def default(self, obj):
     if isinstance(obj, QuerySet):
         return json.loads(serialize('json', obj))
     elif isinstance(obj, Model):
         return json.loads(serialize('json', [obj]))[0]
     else:
         return DjangoJSONEncoder.default(self, obj)
示例#4
0
 def default(self, obj):
     if isinstance(obj, QuerySet):
         return json.loads(serialize('json', obj))
     elif isinstance(obj, Model):
         return json.loads(serialize('json', [obj]))[0]
     else:
         return DjangoJSONEncoder.default(self, obj)
示例#5
0
文件: json.py 项目: shblhy/cusfast
 def default(self, o):
     if isinstance(o, datetime.datetime):
         return o.strftime("%Y-%m-%d %H-%M-%S")
     if isinstance(o, datetime.date):
         return o.strftime("%Y-%m-%d")
     else:
         return DjangoJSONEncoder.default(self, o)
示例#6
0
文件: jsonrpc.py 项目: reppie/skynet
 def default(self, obj):
     impl = getattr(obj, to_json_implementation, None)
     if impl and callable(impl):
         return impl()
     if hasattr(obj, 'isoformat'):
         return obj.isoformat()
 
     return DjangoJSONEncoder.default(self, obj)
示例#7
0
文件: views.py 项目: hcwilhelm/EVEATS
    def default(self, obj):

        if type(obj) == QuerySet:
            return serializers.serialize("python", obj, ensure_ascii=False)

        if type(obj) == EmptyQuerySet:
            return serializers.serialize("python", obj, ensure_ascii=False)

        return DjangoJSONEncoder.default(self, obj)
示例#8
0
 def default(self, obj):
     #Add the ability to deal with timedelta
     if isinstance(obj, timedelta):
         ARGS = ('days', 'seconds', 'microseconds')
         #So if we get a time-delta object return a dictionary with type and a list of the day, second, microseconds
         return {'__type__': 'datetime.timedelta',
                 'args': [getattr(obj, a) for a in ARGS]}
     if isinstance(obj, QuerySet):
         return [item for item in obj]
     return DjangoJSONEncoder.default(self, obj)
示例#9
0
 def default(self, obj):
     if isinstance(obj, Matrix):
         return {
             "__matrix__": True,
             "cols": obj.cols,
             "width": obj.width,
             "rows": obj.rows,
             "height": obj.height,
             "matrix": obj.matrix.items(),
         }
     return DjangoJSONEncoder.default(self, obj)
示例#10
0
 def default(self, value):
     if isinstance(value, datetime.date):
         return DjangoJSONEncoder.default(self, value)
     if isinstance(value, bytes):
         def bool_from_byte(byte_value):
             return 1 if byte_value == b'\x01' else 0
         return bool_from_byte(value)
     if isinstance(value, Decimal):
         return float(value)
     else:
         return value.__dict__
示例#11
0
 def default(self, obj):
     if isinstance(obj, models.Model):
         if self.__serializable__(obj):
             return obj.serialize()
         else:
             return loads(serialize('json', obj))
     if isinstance(obj, QuerySet):
         list = []
         for o in obj:
             list.append(o.serialize())
         return list
     return DjangoJSONEncoder.default(self, obj)
示例#12
0
 def default(self, obj):
     if isinstance(obj, models.Model):
         if self.__serializable__(obj):
             return obj.serialize()
         else:
             return loads(serialize('json', obj))
     if isinstance(obj, QuerySet):
         list = []
         for o in obj:
             list.append(o.serialize())
         return list
     return DjangoJSONEncoder.default(self, obj)
示例#13
0
 def default(self, obj, **kwargs):
     if isinstance(obj, date):
         return str(obj)
     elif isinstance(obj, models.Model):
         return model_to_dict(obj)
     elif isinstance(obj, ImageFieldFile):
         if obj:
             return obj.url
         return None
     elif isinstance(obj, Decimal):
         return str(obj)
     else:
         return DjangoJSONEncoder.default(obj, **kwargs)
示例#14
0
 def default(self, obj):
     """Add the ability to deal with timedelta"""
     if isinstance(obj, timedelta):
         args = ('days', 'seconds', 'microseconds')
         # So if we get a time-delta object return a dictionary with
         # type and a list of the day, second, microseconds
         return {
             '__type__': 'datetime.timedelta',
             'args': [getattr(obj, arg) for arg in args]
         }
     if isinstance(obj, QuerySet):
         return list(obj)
     return DjangoJSONEncoder.default(self, obj)
示例#15
0
    def default(self, value):
        if isinstance(value, datetime.date):
            return DjangoJSONEncoder.default(self, value)
        elif isinstance(value, bytes):

            def bool_from_byte(byte_value):
                return 1 if byte_value == b'\x01' else 0

            return bool_from_byte(value)
        else:
            value_to_return = value.__dict__
            if '_state' in value_to_return.keys():
                del value_to_return['_state']
            return value_to_return
示例#16
0
def get_models(result):
    encoder = DjangoJSONEncoder()
    content = []
    for e in result:
        rep = ""
        if hasattr(e, "__unicode__"):
            rep = e.__unicode__()
        else:
            rep = e.__str__()
        fields = {"repr": rep}
        
        for f in e._meta.fields:            
            try:
                fields[f.name] = encoder.default(getattr(e, f.name))
            except:
                fields[f.name] = getattr(e, f.name)        
        content.append(fields)
    return content
示例#17
0
    def default(self, obj):
        if hasattr(obj, "nautobot_serialize"):
            cls = obj.__class__
            module = cls.__module__
            qual_name = ".".join([module, cls.__qualname__
                                  ])  # fully qualified dotted import path
            logger.debug("Performing nautobot serialization on %s for type %s",
                         obj, qual_name)
            data = {"__nautobot_type__": qual_name}
            data.update(obj.nautobot_serialize())
            return data

        elif isinstance(obj, set):
            # Convert a set to a list for passing to and from a task
            return list(obj)

        else:
            return DjangoJSONEncoder.default(self, obj)
示例#18
0
 def send_locations(self, locations):
     if locations:
         self.send_json([{
             'i':
             location.id,
             'd':
             DjangoJSONEncoder.default(None, location.datetime),
             'l':
             tuple(location.latlong),
             'h':
             location.heading,
             'r':
             location.journey.route_name,
             'c':
             location.journey.vehicle.get_livery(location.heading),
             't':
             location.journey.vehicle.get_text_colour(),
             'e':
             location.early
         } for location in locations])
示例#19
0
文件: utils.py 项目: josezy/recolecta
    def default(self, obj):
        cls_name = obj.__class__.__name__

        if isinstance(obj, (DecimalField, CharField)):
            return str(obj)

        elif isinstance(obj, (IntegerField, AutoField)):
            return int(obj)

        elif cls_name in ('Action', 'Event'):
            return obj.name

        elif hasattr(obj, '__json__'):
            return obj.__json__()

        elif isinstance(obj, QuerySet):
            return list(obj)

        elif isinstance(obj, uuid.UUID):
            return str(obj)

        elif isinstance(obj, bytes):
            return obj.decode()

        elif cls_name == 'CallableBool':
            # ^ shouldn't check using isinstance because CallableBools
            #   will eventually be deprecated
            return bool(obj)

        elif cls_name == 'AnonymousUser':
            # ^ cant check using isinstance since models aren't ready
            #   yet when this is called
            return None  # AnonUser should always be represented as null in JS

        elif isinstance(obj, StrBasedEnum):
            return str(obj)

        elif cls_name in ('dict_items', 'dict_keys', 'dict_values'):
            return tuple(obj)

        return DjangoJSONEncoder.default(self, obj)
示例#20
0
 def default(self, o):
     if isinstance(o, decimal.Decimal):
         return float(o)
     if isinstance(o, models.Model):
         if self._serializer:
             return self._serializer(o).dict()
         else:
             raise RuntimeError(_('Serializer non specified.'))
     if isinstance(o, UUID):
         return str(o)
     if isinstance(o, Page):
         return o.object_list
     if isinstance(o, Enum):
         return o.value
     if isinstance(o, QuerySet):
         return list(o)
     if isinstance(o, set):
         return list(o)
     if isinstance(o, ValidationError):
         return o.message
     return DjangoJSONEncoder.default(self, o)
示例#21
0
    def default(self, obj):
        if isinstance(obj, recurly.resource.Money):
            return str(obj)

        # Resolve 'relatiator' attributes
        if callable(obj):
            result = obj()
            try:
                return result.to_dict(js=self.js)
            except:
                return result

        if isinstance(obj, recurly.Resource):
            return obj.to_dict(js=self.js)

        try:
            if issubclass(obj, dict) or issubclass(obj, list):
                return list(obj)
        except:
            pass

        return DjangoJSONEncoder.default(self, obj)
示例#22
0
    def default(self, obj):
        if isinstance(obj, recurly.resource.Money):
            return str(obj)

        # Resolve 'relatiator' attributes
        if callable(obj):
            result = obj()
            try:
                return result.to_dict(js=self.js)
            except:
                return result

        if isinstance(obj, recurly.Resource):
            return obj.to_dict(js=self.js)

        try:
            if issubclass(obj, dict) or issubclass(obj, list):
                return list(obj)
        except:
            pass

        return DjangoJSONEncoder.default(self, obj)
示例#23
0
 def default(self, obj):
     if isinstance(obj, QuerySet):
         return [self.default(item) for item in obj]
     if isinstance(obj, Resource):
         return {
             'name': obj.name,
             'user': unicode(obj.user),
             'desc': obj.desc,
             'link': obj.link,
             'created': obj.created,
             'edited': obj.edited,
             'verified': obj.verified,
             'download': self.url(obj.download),
             'thumbnail': self.url(obj.thumbnail),
             'rendering': self.url(obj.rendering),
             'signature': self.url(obj.signature),
             'license': obj.license.code if obj.license else None,
             'extra_status': obj.get_extra_status_display(),
         }
     try:
         return DjangoJSONEncoder.default(self, obj)
     except TypeError:
         return None
示例#24
0
 def channel_send(self, vehicle):
     channel_layer = get_channel_layer()
     if self.heading:
         self.heading = int(self.heading)
         message = {
             'type': 'move_vehicle',
             'id': self.id,
             'datetime': DjangoJSONEncoder.default(None, self.datetime),
             'latlong': tuple(self.latlong),
             'heading': self.heading,
             'route': self.journey.route_name,
             'css': vehicle.get_livery(self.heading),
             'text_colour': vehicle.get_text_colour(),
             'early': self.early
         }
         for channel in Channel.objects.filter(
                 bounds__covers=self.latlong).only('name'):
             try:
                 async_to_sync(channel_layer.send)(channel.name, message)
             except ChannelFull:
                 channel.delete()
         if self.journey.service_id:
             async_to_sync(channel_layer.group_send)(
                 f'service{self.journey.service_id}', message)
示例#25
0
 def default(self, obj):
     # to do not import pymongo it just compares class name
     if type(obj).__name__ == "ObjectId":
         return str(obj)
     else:
         return DjangoJSONEncoder.default(self, obj)
示例#26
0
 def default(self, obj):
     if isinstance(obj, set):
         return list(obj)
     elif isinstance(obj, (datetime.date, datetime.datetime)):
         return DjangoJSONEncoder.default(self, obj)
 def default(self, o):
     if isinstance(o, ObjectId):
         return str(o)
     return DjangoJSONEncoder.default(self, o)
示例#28
0
def serialize_decimal(obj):
    if isinstance(obj, decimal.Decimal):
        return str(obj)
    return DjangoJSONEncoder.default(obj)
示例#29
0
 def default(self, obj):
     if isinstance(obj, bytes):
         return bytesToStr(obj)
     return DjangoJSONEncoder.default(self, obj)
示例#30
0
 def default(self, obj):
     if hasattr(obj, 'serialize'):
         return obj.serialize()
     elif isinstance(obj, QuerySet):
         return list(obj)
     return DjangoJSONEncoder.default(self, obj)
示例#31
0
 def default(self, value):
     if isinstance(value, datetime.date):
         return DjangoJSONEncoder.default(self, value)
     else:
         return value.__dict__
示例#32
0
 def default(self, obj):
     if isinstance(obj, QuerySet):
         return serializers.serialize("python", obj, ensure_ascii=False)
     return DjangoJSONEncoder.default(self, obj)
示例#33
0
 def default(self, obj):
     try:
         return DjangoJSONEncoder.default(self, obj)
     except TypeError:
         return obj.__dict__
示例#34
0
 def default(self, o):
     if isinstance(o, datetime.datetime):
         o = make_local_time(o)
     return DjangoJSONEncoder.default(self, o)
示例#35
0
 def default(self, o):
     if isinstance(o, datetime.datetime):
         o = make_local_time(o)
     return DjangoJSONEncoder.default(self, o)
示例#36
0
 def default(self, obj):
     if isinstance(obj, ApiModel):
         return obj.__dict__
     else:
         return DjangoJSONEncoder.default(self, obj)
示例#37
0
 def default(self, o, **kwargs):
   if isinstance(o, ObjectId):
     return str(o)
   else:
     return DjangoJSONEncoder.default(self, o, **kwargs)
示例#38
0
 def default(self, obj):
     if isinstance(obj, UUID):
         # if the obj is uuid, we simply return the value of uuid
         return obj.hex
     return DjangoJSONEncoder.default(self, obj)
示例#39
0
 def default(self, obj):
     if isinstance(obj, QuerySet):
         return serializers.serialize("python", obj, ensure_ascii=False)
     return DjangoJSONEncoder.default(self, obj)
示例#40
0
 def default(self, obj):
     try:
         return DjangoJSONEncoder.default(self, obj)
     except TypeError:
         return obj.__dict__
示例#41
0
 def default(self, obj):
     if (isinstance(obj, (date, list, dict, str, int, float, bool, type(None), Decimal)) or
             isinstance(obj, six.string_types)):
         return DjangoJSONEncoder.default(self, obj)
     return '{}'.format(type(obj).__name__)
示例#42
0
 def default(self, obj):
     if isinstance(obj, Promise):
         return force_text(obj)
     return DjangoJSONEncoder.default(self, obj)
示例#43
0
 def default(self, obj):
     if isinstance(obj, ObjectId):
         return str(obj)
     else:
         return DjangoJSONEncoder.default(self, obj)
示例#44
0
    def default(self, obj):
        if isinstance(obj, timedelta):
            ARGS = ('days', 'seconds', 'microseconds')
            return {'__type__': 'datetime.timedelta',
                    'args': [getattr(obj, a) for a in ARGS]}
	return DjangoJSONEncoder.default(self, obj)
示例#45
0
 def default(self, obj):
     if isinstance(obj, ObjectId):
         return str(obj)
     else:
         return DjangoJSONEncoder.default(self, obj)
示例#46
0
 def default(self, obj):
     try:
         return obj._json()
     except AttributeError:
         return DjangoJSONEncoder.default(self, obj)
示例#47
0
 def default(self, obj):
     if isinstance(obj, Decimal):
         return float(obj)
     return DjangoJSONEncoder.default(self, obj)
示例#48
0
 def default(self, obj):
     if isinstance(obj, Decimal):
         return float(obj)
     return DjangoJSONEncoder.default(self, obj)