Example #1
0
    def test_dehydrate_explicit_fields(self):
        class GeoBazResource(ModelResource):
            class Meta(ModelResource.Meta):
                model = GeoBaz
                api = Api(name='v1')

        class GeoFooResource(ModelResource):
            class Meta(ModelResource.Meta):
                model = GeoFoo
                api = Api(name='v1')

            class Fields:
                geobazzes = ManyToManyField(attribute='geobazzes', resource_cls=GeoBazResource, embed=True)

        geofoo_resource = GeoFooResource()
        geofoo_dict = {
            'name': 'zed',
            'text': '',
            'integer': 9,
            'float_field': 123.123,
            'boolean': True,
            'geom' : self.poly.wkt,
            'decimal': '12.34',
            'file_field': 'test.mov',
            }
        geofoo = GeoFoo(**geofoo_dict)
        geofoo.save()
        geobaz = GeoBaz.objects.create(name='geobaz 1', geom=self.point)
        geofoo.geobazzes.add(geobaz)

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

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

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

        self.assertTrue('name' in geobazzes[0])
Example #2
0
    def test_save_m2m_objs(self):
        class GeoBazResource(ModelResource):
            class Meta(ModelResource.Meta):
                model = GeoBaz

        class GeoFooResource(ModelResource):
            class Meta(ModelResource.Meta):
                model = GeoFoo
            class Fields:
                geobazzes = ManyToManyField(attribute='geobazzes', resource_cls=GeoBazResource, embed=True)

        geofoo_resource = GeoFooResource()
        geofoo = GeoFoo(
            **{ 'name': 'zed',
                'text': '',
                'integer': 9,
                'float_field': 123.123,
                'boolean': True,
                'decimal': '12.34',
                'geom' : self.poly.wkt,
                'file_field': 'test.mov',
            }
        )
        geofoo.save()
        post_list = self.factory.post('/geofoo/')
        kwargs = {
            'pub': ['post', 'list'],
            'bundles': [{
                'request_data': {
                    'name': 'geofoo name',
                    'geobazzes': [
                        {'name': 'geobaz 1', 'geom' : self.point.wkt }, {'name': 'geobaz 2', 'geom' : self.poly.wkt }
                    ]
                },
                'obj': geofoo
            }]
        }
        request, args, kwargs = geofoo_resource.save_m2m_objs(post_list, [], **kwargs)
        geobazzes = kwargs['bundles'][0]['obj'].geobazzes.all()
        self.assertEqual(geobazzes.count(), 2)
Example #3
0
    def test_save_fk_objs(self):
        class GeoFooResource(ModelResource):
            class Meta(ModelResource.Meta):
                model = GeoFoo
            class Fields:
                geobar = ForeignKeyField(attribute='geobar', resource_cls=self.resource.__class__, embed=True)

        geofoo_resource = GeoFooResource()
        geofoo = GeoFoo(
            **{ 'name': 'zed',
                'text': '',
                'integer': 9,
                'float_field': 123.123,
                'boolean': True,
                'geom' : self.line.wkt,
                'decimal': '12.34',
                'file_field': 'test.mov',
            }
        )
        geofoo.save()
        post_list = self.factory.post('/geofoo/')
        kwargs = {
            'pub': ['post', 'list'],
            'bundles': [{
                'request_data': {
                    'name': 'geofoo name',
                    'geobar': {
                        'name': 'geobar name',
                        'geom': self.point.wkt
                    },
                },
                'obj': geofoo
            }],
        }
        request, args, kwargs = geofoo_resource.save_fk_objs(post_list, [], **kwargs)
        self.assertEqual(kwargs['bundles'][0]['obj'].geobar.name, 'geobar name')