def serialize(self, fields=None, ignore_serializers=None): if not fields: fields = self.opts.publish_fields if not self.instance: return None data = self.get_object_map_data() # Set all the ids for related models # so the datamapper can find the connection data.update(get_id_mappings(self)) # Serialize the fields for field in fields: data[field] = self._serialize_value(field, ignore_serializers) custom_serializer_functions = self._get_custom_field_serializers() for custom_function, name in custom_serializer_functions: serializer = getattr(self, name, None) if serializer: serializer = get_serializer(serializer, self) data[name] = custom_function(self.instance, serializer) else: data[name] = custom_function(self.instance) return data
def serialize(self, fields=None, ignore_serializers=None): if not fields: fields = self.opts.publish_fields if not self.instance: return None data = self.get_object_map_data() # Set all the ids for related models # so the datamapper can find the connection data.update(get_id_mappings(self)) # Serialize the fields for field in fields: data[field] = self._serialize_value(field, ignore_serializers) custom_serializer_functions = self._get_custom_field_serializers() for custom_function, name in custom_serializer_functions: serializer = getattr(self, name, None) if serializer: serializer = get_serializer(serializer, self) data[name] = custom_function(self.instance, serializer) else: data[name] = custom_function(self.instance) return data
def __init__(self, *args, **kwargs): if isinstance(self.serializer_class, str): self.serializer_class = get_serializer(self.serializer_class, self) self._pre_save_state = dict() super(SelfPublishModel, self).__init__(*args, **kwargs) self._serializer = self.serializer_class(instance=self) self._set_pre_save_state()
def get_related_serializers(cls): possible_serializers = [k for k in cls.__dict__.keys() if not k.startswith('_') and not k == 'Meta'] serializers = [] for possible_serializer in possible_serializers: val = getattr(cls, possible_serializer) if isinstance(val, str): val = get_serializer(val, cls) if hasattr(val, 'serialize'): serializers.append((val, possible_serializer)) return serializers
def get_related_serializers(cls): possible_serializers = [k for k in cls.__dict__.keys() if not k.startswith('_') and not k == 'Meta'] serializers = [] for possible_serializer in possible_serializers: val = getattr(cls, possible_serializer) if isinstance(val, str): val = get_serializer(val, cls) if hasattr(val, 'serialize'): serializers.append((val, possible_serializer)) return serializers
def _get_related_serializer(self, key): serializer = getattr(self, key, None) if isinstance(serializer, str): return get_serializer(serializer, self.__class__) return serializer
def _get_related_serializer(self, key): serializer = getattr(self, key, None) if isinstance(serializer, str): return get_serializer(serializer, self.__class__) return serializer