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)
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__)
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)
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)
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)
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)
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)
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)
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)
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__
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)
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)
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)
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)
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
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
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)
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])
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)
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)
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)
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)
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
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)
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)
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)
def serialize_decimal(obj): if isinstance(obj, decimal.Decimal): return str(obj) return DjangoJSONEncoder.default(obj)
def default(self, obj): if isinstance(obj, bytes): return bytesToStr(obj) return DjangoJSONEncoder.default(self, obj)
def default(self, obj): if hasattr(obj, 'serialize'): return obj.serialize() elif isinstance(obj, QuerySet): return list(obj) return DjangoJSONEncoder.default(self, obj)
def default(self, value): if isinstance(value, datetime.date): return DjangoJSONEncoder.default(self, value) else: return value.__dict__
def default(self, obj): if isinstance(obj, QuerySet): return serializers.serialize("python", obj, ensure_ascii=False) return DjangoJSONEncoder.default(self, obj)
def default(self, obj): try: return DjangoJSONEncoder.default(self, obj) except TypeError: return obj.__dict__
def default(self, o): if isinstance(o, datetime.datetime): o = make_local_time(o) return DjangoJSONEncoder.default(self, o)
def default(self, o): if isinstance(o, datetime.datetime): o = make_local_time(o) return DjangoJSONEncoder.default(self, o)
def default(self, obj): if isinstance(obj, ApiModel): return obj.__dict__ else: return DjangoJSONEncoder.default(self, obj)
def default(self, o, **kwargs): if isinstance(o, ObjectId): return str(o) else: return DjangoJSONEncoder.default(self, o, **kwargs)
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)
def default(self, obj): if isinstance(obj, QuerySet): return serializers.serialize("python", obj, ensure_ascii=False) return DjangoJSONEncoder.default(self, obj)
def default(self, obj): try: return DjangoJSONEncoder.default(self, obj) except TypeError: return obj.__dict__
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__)
def default(self, obj): if isinstance(obj, Promise): return force_text(obj) return DjangoJSONEncoder.default(self, obj)
def default(self, obj): if isinstance(obj, ObjectId): return str(obj) else: return DjangoJSONEncoder.default(self, obj)
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)
def default(self, obj): if isinstance(obj, ObjectId): return str(obj) else: return DjangoJSONEncoder.default(self, obj)
def default(self, obj): try: return obj._json() except AttributeError: return DjangoJSONEncoder.default(self, obj)
def default(self, obj): if isinstance(obj, Decimal): return float(obj) return DjangoJSONEncoder.default(self, obj)
def default(self, obj): if isinstance(obj, Decimal): return float(obj) return DjangoJSONEncoder.default(self, obj)