Beispiel #1
0
    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()
Beispiel #2
0
 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)
Beispiel #3
0
    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()
Beispiel #4
0
    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())
Beispiel #6
0
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()
Beispiel #8
0
 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))
Beispiel #11
0
 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)()