コード例 #1
0
    def test_save_fk_objs(self):
        class FooResource(ModelResource):
            class Meta(ModelResource.Meta):
                model = Foo
            class Fields:
                bar = ForeignKeyField(attribute='bar', resource_cls=self.resource.__class__, embed=True)

        foo_resource = FooResource()
        foo = Foo(
            **{ 'name': 'zed',
                'text': '',
                'integer': 9,
                'float_field': 123.123,
                'boolean': True,
                'decimal': '12.34',
                'file_field': 'test.mov',
            }
        )
        foo.save()
        post_list = self.factory.post('/foo/')
        kwargs = {
            'pub': ['post', 'list'],
            'bundles': [{
                'request_data': {
                    'name': 'foo name',
                    'bar': {
                        'name': 'bar name'
                    },
                },
                'obj': foo
            }],
        }
        request, args, kwargs = foo_resource.save_fk_objs(post_list, [], **kwargs)
        self.assertEqual(kwargs['bundles'][0]['obj'].bar.name, 'bar name')
コード例 #2
0
    def test_save_m2m_objs(self):
        class BazResource(ModelResource):
            class Meta(ModelResource.Meta):
                model = Baz

        class FooResource(ModelResource):
            class Meta(ModelResource.Meta):
                model = Foo

            class Fields:
                bazzes = ManyToManyField(attribute='bazzes',
                                         resource_cls=BazResource,
                                         embed=True)

        foo_resource = FooResource()
        foo = Foo(
            **{
                'name': 'zed',
                'text': '',
                'integer': 9,
                'float_field': 123.123,
                'boolean': True,
                'decimal': '12.34',
                'file_field': 'test.mov',
            })
        foo.save()
        post_list = self.factory.post('/foo/')
        kwargs = {
            'pub': ['post', 'list'],
            'bundles': [{
                'request_data': {
                    'name': 'foo name',
                    'bazzes': [{
                        'name': 'baz 1'
                    }, {
                        'name': 'baz 2'
                    }]
                },
                'obj': foo
            }]
        }
        request, args, kwargs = foo_resource.save_m2m_objs(
            post_list, [], **kwargs)
        bazzes = kwargs['bundles'][0]['obj'].bazzes.all()
        self.assertEqual(bazzes.count(), 2)
コード例 #3
0
    def test_dehydrate_explicit_fields(self):
        class BazResource(ModelResource):
            class Meta(ModelResource.Meta):
                model = Baz
                api = Api(name='v1')

        class FooResource(ModelResource):
            class Meta(ModelResource.Meta):
                model = Foo
                api = Api(name='v1')

            class Fields:
                bazzes = ManyToManyField(attribute='bazzes', resource_cls=BazResource, embed=True)

        foo_resource = FooResource()
        foo_dict = {
            'name': 'zed',
            'text': '',
            'integer': 9,
            'float_field': 123.123,
            'boolean': True,
            'decimal': '12.34',
            'file_field': 'test.mov',
            }
        foo = Foo(**foo_dict)
        foo.save()
        baz = Baz.objects.create(name='baz 1')
        foo.bazzes.add(baz)

        bundles = [{
            'obj': foo,
            'response_data': {}
        }]

        kwargs = {
            'bundles': bundles,
            'pub': ['get', 'detail']
        }
        get_detail = self.factory.get('/foo/1')
        request, args, kwargs = foo_resource.dehydrate_explicit_fields(get_detail, [], **kwargs)

        bazzes = kwargs['bundles'][0]['response_data']['bazzes']

        self.assertTrue('name' in bazzes[0])
コード例 #4
0
    def test_dehydrate_explicit_fields(self):
        class BazResource(ModelResource):
            class Meta(ModelResource.Meta):
                model = Baz
                api = Api(name='v1')

        class FooResource(ModelResource):
            class Meta(ModelResource.Meta):
                model = Foo
                api = Api(name='v1')

            class Fields:
                bazzes = ManyToManyField(attribute='bazzes',
                                         resource_cls=BazResource,
                                         embed=True)

        foo_resource = FooResource()
        foo_dict = {
            'name': 'zed',
            'text': '',
            'integer': 9,
            'float_field': 123.123,
            'boolean': True,
            'decimal': '12.34',
            'file_field': 'test.mov',
        }
        foo = Foo(**foo_dict)
        foo.save()
        baz = Baz.objects.create(name='baz 1')
        foo.bazzes.add(baz)

        bundles = [{'obj': foo, 'response_data': {}}]

        kwargs = {'bundles': bundles, 'pub': ['get', 'detail']}
        get_detail = self.factory.get('/foo/1')
        request, args, kwargs = foo_resource.dehydrate_explicit_fields(
            get_detail, [], **kwargs)

        bazzes = kwargs['bundles'][0]['response_data']['bazzes']

        self.assertTrue('name' in bazzes[0])
コード例 #5
0
    def test_save_m2m_objs(self):
        class BazResource(ModelResource):
            class Meta(ModelResource.Meta):
                model = Baz

        class FooResource(ModelResource):
            class Meta(ModelResource.Meta):
                model = Foo
            class Fields:
                bazzes = ManyToManyField(attribute='bazzes', resource_cls=BazResource, embed=True)

        foo_resource = FooResource()
        foo = Foo(
            **{ 'name': 'zed',
                'text': '',
                'integer': 9,
                'float_field': 123.123,
                'boolean': True,
                'decimal': '12.34',
                'file_field': 'test.mov',
            }
        )
        foo.save()
        post_list = self.factory.post('/foo/')
        kwargs = {
            'pub': ['post', 'list'],
            'bundles': [{
                'request_data': {
                    'name': 'foo name',
                    'bazzes': [
                        {'name': 'baz 1'}, {'name': 'baz 2'}
                    ]
                },
                'obj': foo
            }]
        }
        request, args, kwargs = foo_resource.save_m2m_objs(post_list, [], **kwargs)
        bazzes = kwargs['bundles'][0]['obj'].bazzes.all()
        self.assertEqual(bazzes.count(), 2)
コード例 #6
0
    def test_save_fk_objs(self):
        class FooResource(ModelResource):
            class Meta(ModelResource.Meta):
                model = Foo

            class Fields:
                bar = ForeignKeyField(attribute='bar',
                                      resource_cls=self.resource.__class__,
                                      embed=True)

        foo_resource = FooResource()
        foo = Foo(
            **{
                'name': 'zed',
                'text': '',
                'integer': 9,
                'float_field': 123.123,
                'boolean': True,
                'decimal': '12.34',
                'file_field': 'test.mov',
            })
        foo.save()
        post_list = self.factory.post('/foo/')
        kwargs = {
            'pub': ['post', 'list'],
            'bundles': [{
                'request_data': {
                    'name': 'foo name',
                    'bar': {
                        'name': 'bar name'
                    },
                },
                'obj': foo
            }],
        }
        request, args, kwargs = foo_resource.save_fk_objs(
            post_list, [], **kwargs)
        self.assertEqual(kwargs['bundles'][0]['obj'].bar.name, 'bar name')