def render_template(self, context): encoder = Serializer() if isinstance(context, QuerySet): return encoder.serialize(context, ensure_ascii=False) else: encoder.objects = context encoder.options = dict() encoder.stream = StringIO() encoder.end_serialization() return encoder.getvalue()
def end_object( self, obj ): if(self.selected_fields ): for field_name in self.selected_fields: if self._current.has_key(field_name):continue try: o = obj for attr in field_name.split("."): o = getattr(o, attr) if callable(o): o = o() field_name = field_name.replace(".", "_") self._current[field_name] = smart_unicode(o, strings_only=True) except: field_name = field_name.replace(".", "_") self._current[field_name] = None BuitlInJsonSerializer.end_object(self, obj)
def end_object(self, obj): if (self.selected_fields): for field_name in self.selected_fields: if self._current.has_key(field_name): continue try: o = obj for attr in field_name.split("."): o = getattr(o, attr) if callable(o): o = o() field_name = field_name.replace(".", "_") if type(o) not in [types.ListType, types.DictType]: self._current[field_name] = smart_unicode( o, strings_only=True) else: self._current[field_name] = o except: field_name = field_name.replace(".", "_") self._current[field_name] = None BuitlInJsonSerializer.end_object(self, obj)
class LoadDataTestCase(DataCommandTestCase): def setUp(self): super(LoadDataTestCase, self).setUp() self.serializer = JSONSerializer() def test_load_mutable_models(self): """ Makes sure mutable models instances are correctly loaded when calling `loaddata`. """ instance = self.model_cls(pk=1) # Make sure to remove the model from the app cache because we're # actually testing it's correctly loaded. remove_from_app_cache(self.model_cls) with NamedTemporaryFile(suffix='.json') as stream: self.serializer.serialize([instance], stream=BytesWritter(stream)) stream.seek(0) call_command( 'loaddata', stream.name, stdout=StringIO(), #commit=False ) self.assertTrue(self.model_cls.objects.filter(pk=instance.pk).exists()) def test_invalid_model_idenfitier_raises(self): """ Makes sure an invalid model identifier raises the correct exception. """ instance = self.model_cls(pk=1) with NamedTemporaryFile(suffix='.json') as stream: self.serializer.serialize([instance], stream=BytesWritter(stream)) stream.seek(0) self.model_def.delete() with self.assertRaisesMessage( DeserializationError, "Invalid model identifier: 'mutant.model'"): call_command('loaddata', stream.name, stdout=StringIO())
class LoadDataTestCase(DataCommandTestCase): def setUp(self): super(LoadDataTestCase, self).setUp() self.serializer = JSONSerializer() def test_load_mutable_models(self): """ Makes sure mutable models instances are correctly loaded when calling `loaddata`. """ instance = self.model_cls(pk=1) # Make sure to remove the model from the app cache because we're # actually testing it's correctly loaded. remove_from_app_cache(self.model_cls) with NamedTemporaryFile(suffix='.json') as stream: self.serializer.serialize([instance], stream=stream) stream.seek(0) call_command( 'loaddata', stream.name, stdout=StringIO(), commit=False ) self.assertTrue(self.model_cls.objects.filter(pk=instance.pk).exists()) def test_invalid_model_idenfitier_raises(self): """ Makes sure an invalid model identifier raises the correct exception. """ instance = self.model_cls(pk=1) with NamedTemporaryFile(suffix='.json') as stream: self.serializer.serialize([instance], stream=stream) stream.seek(0) self.model_def.delete() with self.assertRaisesMessage( DeserializationError, "Invalid model identifier: 'mutant.model'"): call_command( 'loaddata', stream.name, stdout=StringIO() )
def setUp(self): super(LoadDataTestCase, self).setUp() self.serializer = JSONSerializer()
def json_obj(self): serializer = Serializer() return json.loads( serializer.serialize(self.queryset, use_natural_primary_keys=False) )
def json_obj(self): serializer = Serializer() return json.loads(serializer.serialize( self.queryset, use_natural_primary_keys=False))
def handle_field(self, obj, field): JSONSerializer.handle_field(self, obj, field) if isinstance(field, FileField): self._current[field.name] = getattr(obj, 'get_%s_url' % field.name)()