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])
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)
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')