def wfs_service_path(ngw_resource_group, ngw_httptest_app): with transaction.manager: vl_type = VectorLayer( parent_id=ngw_resource_group, display_name='type', owner_user=User.by_keyname('administrator'), srs=SRS.filter_by(id=3857).one(), tbl_uuid=six.text_type(uuid4().hex), ).persist() dsource = type_geojson_dataset('type.geojson') layer = dsource.GetLayer(0) vl_type.setup_from_ogr(layer, lambda x: x) vl_type.load_from_ogr(layer, lambda x: x) DBSession.flush() # NOTE: GDAL doesn't support time fields in GML / WFS. It completely breaks # XSD schema parsing. Delete the time field to pass tests. DBSession.delete(vl_type.field_by_keyname('time')) wfs_service = WFSService( parent_id=ngw_resource_group, display_name='test_wfsserver_service', owner_user=User.by_keyname('administrator'), ).persist() wfs_service.layers.append( WFS_Service_Layer(resource=vl_type, keyname='type', display_name='type', maxfeatures=1000)) DBSession.flush() DBSession.expunge(vl_type) DBSession.expunge(wfs_service) path = '{}/api/resource/{}/wfs'.format(ngw_httptest_app.base_url, wfs_service.id) yield path with transaction.manager: DBSession.delete(VectorLayer.filter_by(id=vl_type.id).one()) DBSession.delete(WFSService.filter_by(id=wfs_service.id).one())
def service(ngw_resource_group): with transaction.manager: vl_type = VectorLayer( parent_id=ngw_resource_group, display_name='type', owner_user=User.by_keyname('administrator'), srs=SRS.filter_by(id=3857).one(), tbl_uuid=six.text_type(uuid4().hex), ).persist() dsource = type_geojson_dataset('type.geojson') layer = dsource.GetLayer(0) vl_type.setup_from_ogr(layer, lambda x: x) vl_type.load_from_ogr(layer, lambda x: x) DBSession.flush() # NOTE: GDAL doesn't support time fields in GML / WFS. It completely breaks # XSD schema parsing. Delete the time field to pass tests. DBSession.delete(vl_type.field_by_keyname('time')) vl_pointz = VectorLayer( parent_id=ngw_resource_group, display_name='pointz', owner_user=User.by_keyname('administrator'), srs=SRS.filter_by(id=3857).one(), tbl_uuid=six.text_type(uuid4().hex), ).persist() dsource = type_geojson_dataset('pointz.geojson') layer = dsource.GetLayer(0) vl_pointz.setup_from_ogr(layer, lambda x: x) vl_pointz.load_from_ogr(layer, lambda x: x) DBSession.flush() res_wfs = WFSService( parent_id=ngw_resource_group, display_name='test_wfsserver_service', owner_user=User.by_keyname('administrator'), ).persist() res_wfs.layers.extend(( WFSLayer(resource=vl_type, keyname='type', display_name='type', maxfeatures=1000), WFSLayer(resource=vl_pointz, keyname='pointz', display_name='pointz', maxfeatures=1000), )) DBSession.flush() DBSession.expunge(vl_type) DBSession.expunge(vl_pointz) DBSession.expunge(res_wfs) yield res_wfs.id with transaction.manager: DBSession.delete(VectorLayer.filter_by(id=vl_type.id).one()) DBSession.delete(VectorLayer.filter_by(id=vl_pointz.id).one()) DBSession.delete(WFSService.filter_by(id=res_wfs.id).one())