add endpoint for getting district and subdistrict (#10027)
This commit is contained in:
parent
8062d4641a
commit
c19b87cc6a
|
@ -43,6 +43,9 @@ Service URL : {{ object.service_url }}
|
|||
<li>{% trans 'Get address by geographical position:' %}
|
||||
<a href="{% url 'montpellier-sig-adresse' slug=object.slug %}?lat=52.5487429714954&lon=-1.81602098644987">{{ site_base_uri }}{% url 'montpellier-sig-adresse' slug=object.slug %}?lat=52.5487429714954&lon=-1.81602098644987</a>
|
||||
</li>
|
||||
<li>{% trans 'Get quartier and sousquartier by street name and number:' %}
|
||||
<a href="{% url 'montpellier-sig-district' slug=object.slug insee=34172 nom_rue='ALL ALAIN CORNEAU' numero=66 %}">{{ site_base_uri }}{% url 'montpellier-sig-district' slug=object.slug insee=34172 nom_rue='ALL ALAIN CORNEAU' numero=66 %}</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
|
|
@ -13,7 +13,8 @@ public_urlpatterns = patterns('',
|
|||
url(r'^(?P<slug>[\w,-]+)/voies/(?P<insee>\d+)$', VoiesView.as_view(), name='montpellier-sig-voies'),
|
||||
url(r'^(?P<slug>[\w,-]+)/voies/(?P<insee>\d+)/(?P<nom_rue>[\w ]+)/numero$', VoiesCommuneView.as_view(), name='montpellier-voies-commune'),
|
||||
url(r'^(?P<slug>[\w,-]+)/voiecommune/(?P<nom_rue>[\w ]+)$', VoieCommuneView.as_view(), name='montpellier-sig-voiecommune'),
|
||||
url(r'^(?P<slug>[\w,-]+)/reverse$', AdresseView.as_view(), name='montpellier-sig-adresse')
|
||||
url(r'^(?P<slug>[\w,-]+)/reverse$', AdresseView.as_view(), name='montpellier-sig-adresse'),
|
||||
url(r'^(?P<slug>[\w,-]+)/quartier/(?P<insee>\d+)/(?P<nom_rue>[\w ]+)/(?P<numero>\d+)/$', DistrictView.as_view(), name='montpellier-sig-district')
|
||||
)
|
||||
|
||||
management_urlpatterns = patterns('',
|
||||
|
|
|
@ -57,6 +57,13 @@ def prefix_cleanup(name):
|
|||
name = (full + name[len(prefix):]).strip()
|
||||
return name
|
||||
|
||||
def get_original_prefix(name):
|
||||
name = name.strip()
|
||||
for prefix, full in prefix_map.items():
|
||||
if name.startswith(full + ' '):
|
||||
name = (prefix + name[len(full):]).strip()
|
||||
return name.upper()
|
||||
|
||||
def split_street(name):
|
||||
name = name.strip()
|
||||
for prefix, full in prefix_map.items():
|
||||
|
@ -144,7 +151,7 @@ class VoiesCommuneView(View, SingleObjectMixin):
|
|||
|
||||
def get(self, request, *args, **kwargs):
|
||||
insee = kwargs['insee']
|
||||
nom_rue = kwargs['nom_rue']
|
||||
nom_rue = get_original_prefix(kwargs['nom_rue'])
|
||||
if 'q' in request.GET:
|
||||
result = self.get_object().sig_request('commune/' + insee + '/voie/' + nom_rue + '/numero/' + request.GET['q'])
|
||||
else:
|
||||
|
@ -203,3 +210,19 @@ class AdresseView(View, SingleObjectMixin):
|
|||
'country': 'France',
|
||||
}
|
||||
return utils.response_for_json(request, {'address': address})
|
||||
|
||||
class DistrictView(View, SingleObjectMixin):
|
||||
model = MontpellierSig
|
||||
|
||||
def get(self, request, *args, **kwargs):
|
||||
insee = kwargs['insee']
|
||||
nom_rue = get_original_prefix(kwargs['nom_rue'])
|
||||
numero = kwargs['numero']
|
||||
|
||||
uri = 'commune/%s/voie/%s/numero/%s' % (insee, nom_rue, numero)
|
||||
result = self.get_object().sig_request(uri)
|
||||
if result:
|
||||
r = result[0]
|
||||
data = self.get_object().sig_request('adresse/%s/%s' %(r['geometry'].get('x'), r['geometry'].get('y')))
|
||||
return utils.response_for_json(request, {'data': data})
|
||||
return utils.response_for_json(request, {'data': []})
|
||||
|
|
Loading…
Reference in New Issue