arcgis: return every elements of a layer (#13156)
This commit is contained in:
parent
b09e27d9c8
commit
d858c8aa64
|
@ -38,17 +38,23 @@ class Arcgis(BaseResource):
|
|||
return 'gis'
|
||||
|
||||
@endpoint(serializer_type='json-api')
|
||||
def district(self, request, lon, lat):
|
||||
try:
|
||||
lon, lat = float(lon), float(lat)
|
||||
except(ValueError,):
|
||||
raise ParameterTypeError('<lon> and <lat> must be floats')
|
||||
def district(self, request, lon=None, lat=None):
|
||||
if lon and lat:
|
||||
try:
|
||||
lon, lat = float(lon), float(lat)
|
||||
geometry = '{}, {}'.format(lon, lat)
|
||||
geometryType = 'esriGeometryPoint'
|
||||
except(ValueError,):
|
||||
raise ParameterTypeError('<lon> and <lat> must be floats')
|
||||
else:
|
||||
geometry = ''
|
||||
geometryType = 'esriGeometryEnvelope'
|
||||
|
||||
params = {
|
||||
'where': '1=1',
|
||||
'f': 'pjson',
|
||||
'geometry': '{}, {}'.format(lon, lat),
|
||||
'geometryType': 'esriGeometryPoint',
|
||||
'geometry': geometry,
|
||||
'geometryType': geometryType,
|
||||
'inSR': '4326',
|
||||
'outFields': '*',
|
||||
'outSR': '4326',
|
||||
|
@ -67,9 +73,11 @@ class Arcgis(BaseResource):
|
|||
|
||||
response = self.requests.get(url, params=params)
|
||||
data = response.json()
|
||||
data = data['features'][0]['attributes']
|
||||
features = data['features']
|
||||
|
||||
return {
|
||||
'id': data.get('NUMERO'),
|
||||
'name': data.get('NOM')
|
||||
}
|
||||
data = [
|
||||
{'id': feature['attributes'].get('NUMERO'), 'name': feature['attributes'].get('NOM')} for feature in features]
|
||||
|
||||
if len(data) == 1:
|
||||
return data[0]
|
||||
return data
|
||||
|
|
|
@ -0,0 +1,124 @@
|
|||
{
|
||||
"features": [
|
||||
{
|
||||
"attributes": {
|
||||
"CCOCOM": "395",
|
||||
"DATE_MAJ": 1433116800000,
|
||||
"NBRE_HAB": 5306,
|
||||
"NOM": "PLATEAU DE HAYE",
|
||||
"NUMERO": 1,
|
||||
"OBJECTID": 7,
|
||||
"SOURCE_NBRE_HAB": "VILLE DE NANCY"
|
||||
}
|
||||
},
|
||||
{
|
||||
"attributes": {
|
||||
"CCOCOM": "395",
|
||||
"DATE_MAJ": 1433116800000,
|
||||
"NBRE_HAB": null,
|
||||
"NOM": "RIVES DE MEURTHE",
|
||||
"NUMERO": 6,
|
||||
"OBJECTID": 1,
|
||||
"SOURCE_NBRE_HAB": "VILLE DE NANCY"
|
||||
}
|
||||
},
|
||||
{
|
||||
"attributes": {
|
||||
"CCOCOM": "395",
|
||||
"DATE_MAJ": 1433116800000,
|
||||
"NBRE_HAB": null,
|
||||
"NOM": "SAINT NICOLAS / CHARLES III / VIEILLE VILLE / TROIS MAISONS/ LEOPOLD",
|
||||
"NUMERO": 7,
|
||||
"OBJECTID": 2,
|
||||
"SOURCE_NBRE_HAB": "VILLE DE NANCY"
|
||||
}
|
||||
},
|
||||
{
|
||||
"attributes": {
|
||||
"CCOCOM": "395",
|
||||
"DATE_MAJ": 1433116800000,
|
||||
"NBRE_HAB": 14000,
|
||||
"NOM": "SAINT PIERRE / RENE II / BONSECOURS",
|
||||
"NUMERO": 5,
|
||||
"OBJECTID": 3,
|
||||
"SOURCE_NBRE_HAB": "VILLE DE NANCY"
|
||||
}
|
||||
},
|
||||
{
|
||||
"attributes": {
|
||||
"CCOCOM": "395",
|
||||
"DATE_MAJ": 1433116800000,
|
||||
"NBRE_HAB": 24139,
|
||||
"NOM": "HAUSSONVILLE / BLANDAN / MON DESERT / SAURUPT",
|
||||
"NUMERO": 4,
|
||||
"OBJECTID": 4,
|
||||
"SOURCE_NBRE_HAB": "VILLE DE NANCY"
|
||||
}
|
||||
},
|
||||
{
|
||||
"attributes": {
|
||||
"CCOCOM": "395",
|
||||
"DATE_MAJ": 1433116800000,
|
||||
"NBRE_HAB": 18870,
|
||||
"NOM": "POINCARE / FOCH / ANATOLE FRANCE / CROIX DE BOURGOGNE",
|
||||
"NUMERO": 3,
|
||||
"OBJECTID": 5,
|
||||
"SOURCE_NBRE_HAB": "VILLE DE NANCY"
|
||||
}
|
||||
},
|
||||
{
|
||||
"attributes": {
|
||||
"CCOCOM": "395",
|
||||
"DATE_MAJ": 1433116800000,
|
||||
"NBRE_HAB": 12665,
|
||||
"NOM": "BEAUREGARD / BOUFFLERS / BUTHEGNEMONT / BOUDONVILLE",
|
||||
"NUMERO": 2,
|
||||
"OBJECTID": 6,
|
||||
"SOURCE_NBRE_HAB": "VILLE DE NANCY"
|
||||
}
|
||||
}
|
||||
],
|
||||
"fields": [
|
||||
{
|
||||
"alias": "OBJECTID",
|
||||
"name": "OBJECTID",
|
||||
"type": "esriFieldTypeOID"
|
||||
},
|
||||
{
|
||||
"alias": "CCOCOM",
|
||||
"length": 3,
|
||||
"name": "CCOCOM",
|
||||
"type": "esriFieldTypeString"
|
||||
},
|
||||
{
|
||||
"alias": "NOM",
|
||||
"length": 100,
|
||||
"name": "NOM",
|
||||
"type": "esriFieldTypeString"
|
||||
},
|
||||
{
|
||||
"alias": "NUMERO",
|
||||
"name": "NUMERO",
|
||||
"type": "esriFieldTypeSmallInteger"
|
||||
},
|
||||
{
|
||||
"alias": "NBRE_HAB",
|
||||
"name": "NBRE_HAB",
|
||||
"type": "esriFieldTypeSmallInteger"
|
||||
},
|
||||
{
|
||||
"alias": "SOURCE_NBRE_HAB",
|
||||
"length": 50,
|
||||
"name": "SOURCE_NBRE_HAB",
|
||||
"type": "esriFieldTypeString"
|
||||
},
|
||||
{
|
||||
"alias": "DATE_MAJ",
|
||||
"length": 36,
|
||||
"name": "DATE_MAJ",
|
||||
"type": "esriFieldTypeDate"
|
||||
}
|
||||
],
|
||||
"globalIdFieldName": "",
|
||||
"objectIdFieldName": "OBJECTID"
|
||||
}
|
|
@ -43,10 +43,6 @@ def url():
|
|||
'connector': 'arcgis', 'slug': 'test', 'endpoint': 'district'})
|
||||
|
||||
|
||||
def test_get_district_without_parameters(app, setup, url):
|
||||
app.get(url, {}, status=400)
|
||||
|
||||
|
||||
def test_get_district_parameters_error(app, setup, url):
|
||||
resp = app.get(url, {'lon': 'lon', 'lat': 'lat'}, status=400)
|
||||
assert resp.json['err_desc'] == '<lon> and <lat> must be floats'
|
||||
|
@ -62,3 +58,14 @@ def test_get_district(mocked_get, app, setup, url):
|
|||
data = resp.json['data']
|
||||
assert data['id'] == 4
|
||||
assert data['name'] == 'HAUSSONVILLE / BLANDAN / MON DESERT / SAURUPT'
|
||||
|
||||
|
||||
@mock.patch('passerelle.utils.LoggedRequest.get')
|
||||
def test_get_all_district(mocked_get, app, setup, url):
|
||||
mocked_get.return_value = MockedRequestsResponse(
|
||||
content=get_file_content('all_districts.json'),
|
||||
status_code=200)
|
||||
|
||||
resp = app.get(url, status=200)
|
||||
data = resp.json['data']
|
||||
assert len(data) == 7
|
||||
|
|
Loading…
Reference in New Issue