16 |
16 |
|
17 |
17 |
import json
|
18 |
18 |
|
|
19 |
from pyproj import Geod
|
|
20 |
|
19 |
21 |
from django.db import models
|
20 |
22 |
from django.http import HttpResponse
|
21 |
23 |
from django.utils.http import urlencode
|
... | ... | |
137 |
139 |
'mode': {'description': _('Search mode: CLOSE_SCHOLAR (default) = 3km, FAR_ALL = 15km')},
|
138 |
140 |
})
|
139 |
141 |
def search(self, request, lat, lon, institution, address='', mode='CLOSE_SCHOLAR'):
|
|
142 |
lat = float(lat.replace(',', '.'))
|
|
143 |
lon = float(lon.replace(',', '.'))
|
140 |
144 |
payload = {
|
141 |
|
'from-lat': lat.replace(',', '.'),
|
142 |
|
'from-long': lon.replace(',', '.'),
|
|
145 |
'from-lat': '%s' % lat,
|
|
146 |
'from-long': '%s' % lon,
|
143 |
147 |
'from-address': address,
|
144 |
148 |
'institution-id': institution,
|
145 |
149 |
'type': mode,
|
... | ... | |
148 |
152 |
for stop in stops:
|
149 |
153 |
stop['id'] = '%s' % stop['id']
|
150 |
154 |
stop['text'] = stop['commercial_name']
|
151 |
|
stop['latlon'] = '%s;%s' % (stop.get('latitude') or '0.00', stop.get('longitude') or '0.00')
|
|
155 |
try:
|
|
156 |
slat = float(stop.get('latitude'))
|
|
157 |
slon = float(stop.get('longitude'))
|
|
158 |
geod = Geod(ellps='WGS84')
|
|
159 |
stop['distance'] = int(geod.inv(lon, lat, slon, slat)[2])
|
|
160 |
except (ValueError, TypeError):
|
|
161 |
slat = slon = 0.0
|
|
162 |
stop['distance'] = None
|
|
163 |
stop['latlon'] = '%s;%s' % (slat, slon)
|
152 |
164 |
return {'data': stops}
|
153 |
165 |
|
154 |
166 |
@endpoint(name='stop-areas',
|