misc-fred/grandlyon/wcs-scripts/has_close_demands.py

37 lines
1.2 KiB
Python

import inspect
import json
from pyproj import Proj, transform, Geod
from qommon import misc
from qommon.storage import Contains
from wcs.wf.geolocate import GeolocateWorkflowStatusItem
geod = Geod(ellps='WGS84')
formdef = form_objects.formdef
result = False
coords = vars().get('form_var_carte')
if not coords and 'form_var_numero' in vars():
geolocate = GeolocateWorkflowStatusItem()
geolocate.method = 'address_string'
geolocate.address_string = '[form_var_numero] [form_var_voie], [form_var_commune], France'
coords = geolocate.geolocate_address_string(None)
coords = '%(lat)s;%(lon)s' % coords
if coords:
lat, lon = coords.split(';')
lat, lon = float(lat), float(lon)
applied_filters = ['wf-%s' % x.id for x in formdef.workflow.get_not_endpoint_status()]
formdatas = formdef.data_class().select([Contains('status', applied_filters)])
for formdata in formdatas:
if not formdata.geolocations:
continue
coords = misc.normalize_geolocation(formdata.geolocations['base'])
distance = geod.inv(coords['lon'], coords['lat'], lon, lat)[2]
if distance < 750:
result = True
break