add endpoint for getting district and subdistrict (#10027)

This commit is contained in:
Serghei Mihai 2016-04-15 10:19:50 +02:00
parent 8062d4641a
commit c19b87cc6a
3 changed files with 29 additions and 2 deletions

View File

@ -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>

View File

@ -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('',

View File

@ -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': []})