base_adresse: PEP8ness, code style (#30458)
This commit is contained in:
parent
5e23162573
commit
43b837172b
|
@ -1,10 +1,11 @@
|
|||
import bz2
|
||||
import json
|
||||
import os
|
||||
import urllib
|
||||
import urlparse
|
||||
import unicodedata
|
||||
|
||||
import six
|
||||
|
||||
from django.db import connection, models
|
||||
from django.db.models import Q
|
||||
from django.utils.http import urlencode
|
||||
|
@ -24,7 +25,9 @@ class BaseAdresse(BaseResource):
|
|||
|
||||
category = _('Geographic information system')
|
||||
|
||||
zipcode = models.CharField(max_length=600, blank=True,
|
||||
zipcode = models.CharField(
|
||||
max_length=600,
|
||||
blank=True,
|
||||
verbose_name=_('Postal codes or county number to get streets, separated with commas'))
|
||||
|
||||
class Meta:
|
||||
|
@ -158,7 +161,8 @@ class BaseAdresse(BaseResource):
|
|||
departments.add(zipcode[:2])
|
||||
|
||||
for department in departments:
|
||||
ban_file = self.requests.get('http://bano.openstreetmap.fr/BAN_odbl/BAN_odbl_{}-json.bz2'.format(department))
|
||||
ban_file = self.requests.get(
|
||||
'http://bano.openstreetmap.fr/BAN_odbl/BAN_odbl_{}-json.bz2'.format(department))
|
||||
if ban_file.status_code != 200:
|
||||
continue
|
||||
|
||||
|
@ -166,9 +170,9 @@ class BaseAdresse(BaseResource):
|
|||
street_info = json.loads(line)
|
||||
if street_info['type'] == 'street' and street_info['postcode'].startswith(zipcodes):
|
||||
if type(street_info['citycode']) is list:
|
||||
street_info['citycode'] = unicode(street_info['citycode'][0])
|
||||
street_info['citycode'] = six.text_type(street_info['citycode'][0])
|
||||
if type(street_info['name']) is list:
|
||||
street_info['name'] = unicode(street_info['name'][0])
|
||||
street_info['name'] = six.text_type(street_info['name'][0])
|
||||
street = StreetModel.objects.get_or_create(citycode=street_info['citycode'],
|
||||
name=street_info['name'][:150])
|
||||
street[0].city = street_info['city']
|
||||
|
@ -205,7 +209,7 @@ class StreetModel(models.Model):
|
|||
ordering = ['unaccent_name', 'name']
|
||||
|
||||
def __unicode__(self):
|
||||
return unicode(self.name)
|
||||
return self.name
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
self.unaccent_name = unicodedata.normalize('NFKD', self.name).encode('ascii', 'ignore')
|
||||
|
|
|
@ -10,32 +10,61 @@ from django.core.management import call_command
|
|||
|
||||
from passerelle.apps.base_adresse.models import BaseAdresse, StreetModel
|
||||
|
||||
from passerelle.views import WrongParameter
|
||||
|
||||
|
||||
FAKED_CONTENT = '{"limit": 1, "attribution": "BAN", "version": "draft", "licence": "ODbL 1.0", "query": "plop", "type": "FeatureCollection", "features": [{"geometry": {"type": "Point", "coordinates": [-0.593775, 47.474633]}, "properties": {"citycode": "49007", "name": "Rue Roger Halope", "id": "49007_6950_be54bd", "city": "Angers", "context": "49, Maine-et-Loire, Pays de la Loire", "score": 0.14097272727272728, "label": "Rue Roger Halope 49000 Angers", "postcode": "49000", "type": "street"}, "type": "Feature"}]}'
|
||||
FAKED_CONTENT = json.dumps({
|
||||
"limit": 1,
|
||||
"attribution": "BAN",
|
||||
"version": "draft",
|
||||
"licence": "ODbL 1.0",
|
||||
"query": "plop",
|
||||
"type": "FeatureCollection",
|
||||
"features": [
|
||||
{
|
||||
"geometry": {
|
||||
"type": "Point",
|
||||
"coordinates": [-0.593775, 47.474633]
|
||||
},
|
||||
"properties": {
|
||||
"citycode": "49007",
|
||||
"name": "Rue Roger Halope",
|
||||
"id": "49007_6950_be54bd",
|
||||
"city": "Angers",
|
||||
"context": "49, Maine-et-Loire, Pays de la Loire",
|
||||
"score": 0.14097272727272728,
|
||||
"label": "Rue Roger Halope 49000 Angers",
|
||||
"postcode": "49000",
|
||||
"type": "street"
|
||||
},
|
||||
"type": "Feature"
|
||||
}
|
||||
]
|
||||
})
|
||||
|
||||
FAKE_DATA = ''
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def base_adresse(db):
|
||||
return utils.setup_access_rights(BaseAdresse.objects.create(slug='base-adresse', zipcode='73'))
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def base_adresse_97x(db):
|
||||
return utils.setup_access_rights(BaseAdresse.objects.create(slug='base-adresse',
|
||||
zipcode='97425'))
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def base_adresse_corsica(db):
|
||||
return utils.setup_access_rights(BaseAdresse.objects.create(slug='base-adresse',
|
||||
zipcode='20000, 20100 '))
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def base_adresse_multiple(db):
|
||||
return utils.setup_access_rights(BaseAdresse.objects.create(slug='base-adresse',
|
||||
zipcode='73, 73100, 97425,20000 '))
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def street(db):
|
||||
return StreetModel.objects.create(city=u'Chambéry',
|
||||
|
@ -44,6 +73,7 @@ def street(db):
|
|||
type=u'street',
|
||||
citycode=u'73001')
|
||||
|
||||
|
||||
@mock.patch('passerelle.utils.Request.get')
|
||||
def test_base_adresse_search(mocked_get, app, base_adresse):
|
||||
endpoint = utils.generic_endpoint_url('base-adresse', 'search', slug=base_adresse.slug)
|
||||
|
@ -55,6 +85,7 @@ def test_base_adresse_search(mocked_get, app, base_adresse):
|
|||
assert data['lon'] == '-0.593775'
|
||||
assert data['display_name'] == 'Rue Roger Halope 49000 Angers'
|
||||
|
||||
|
||||
@mock.patch('passerelle.utils.Request.get')
|
||||
def test_base_adresse_search_path(mocked_get, app, base_adresse):
|
||||
base_adresse.service_url = 'http://example.net/path/'
|
||||
|
@ -68,6 +99,7 @@ def test_base_adresse_search_path(mocked_get, app, base_adresse):
|
|||
assert data['lon'] == '-0.593775'
|
||||
assert data['display_name'] == 'Rue Roger Halope 49000 Angers'
|
||||
|
||||
|
||||
def test_base_adresse_search_qs(app, base_adresse, mock_api_adresse_data_gouv_fr_search):
|
||||
resp = app.get('/base-adresse/%s/search?q=plop' % base_adresse.slug)
|
||||
assert 'display_name' in resp.json[0]
|
||||
|
@ -77,10 +109,12 @@ def test_base_adresse_search_qs_zipcode(app, base_adresse, mock_api_adresse_data
|
|||
resp = app.get('/base-adresse/%s/search?q=plop&zipcode=49000' % base_adresse.slug)
|
||||
assert 'display_name' in resp.json[0]
|
||||
|
||||
|
||||
def test_base_adresse_search_qs_empty(app, base_adresse, mock_api_adresse_data_gouv_fr_search):
|
||||
resp = app.get('/base-adresse/%s/search?q=' % base_adresse.slug)
|
||||
assert len(resp.json) == 0
|
||||
|
||||
|
||||
def test_base_adresse_search_qs_parameters_error(app, base_adresse,
|
||||
mock_api_adresse_data_gouv_fr_search):
|
||||
resp = app.get('/base-adresse/%s/search' % base_adresse.slug, status=400)
|
||||
|
@ -105,14 +139,16 @@ def test_base_adresse_reverse(app, base_adresse, mock_api_adresse_data_gouv_fr_r
|
|||
assert data['address']['postcode'] == '49000'
|
||||
assert data['address']['citycode'] == '49007'
|
||||
|
||||
|
||||
@mock.patch('passerelle.utils.Request.get')
|
||||
def test_base_adresse_reverse_path(mocked_get, app, base_adresse):
|
||||
mocked_get.return_value = utils.FakedResponse(content=json.dumps({'features': []}), status_code=200)
|
||||
base_adresse.service_url = 'http://example.net/path/'
|
||||
base_adresse.save()
|
||||
resp = app.get('/base-adresse/%s/reverse?lon=-0.593775&lat=47.474633' % base_adresse.slug)
|
||||
app.get('/base-adresse/%s/reverse?lon=-0.593775&lat=47.474633' % base_adresse.slug)
|
||||
assert mocked_get.call_args[0][0].startswith('http://example.net/path/reverse/?')
|
||||
|
||||
|
||||
def test_base_adresse_streets_unaccent(app, base_adresse, street):
|
||||
resp = app.get('/base-adresse/%s/streets?q=une rue tres acc' % base_adresse.slug)
|
||||
data = json.loads(resp.body)
|
||||
|
@ -124,6 +160,7 @@ def test_base_adresse_streets_unaccent(app, base_adresse, street):
|
|||
assert result['zipcode'] == street.zipcode
|
||||
assert result['id'] == street.id
|
||||
|
||||
|
||||
@mock.patch('passerelle.utils.Request.get')
|
||||
def test_base_adresse_command_update(mocked_get, db, base_adresse):
|
||||
filepath = os.path.join(os.path.dirname(__file__), 'data', 'update_streets_test.bz2')
|
||||
|
@ -142,6 +179,7 @@ def test_base_adresse_command_update(mocked_get, db, base_adresse):
|
|||
call_command('cron', 'daily')
|
||||
mocked_get.call_count == 2
|
||||
|
||||
|
||||
@mock.patch('passerelle.utils.Request.get')
|
||||
def test_base_adresse_command_hourly_update(mocked_get, db, base_adresse):
|
||||
filepath = os.path.join(os.path.dirname(__file__), 'data', 'update_streets_test.bz2')
|
||||
|
@ -154,6 +192,7 @@ def test_base_adresse_command_hourly_update(mocked_get, db, base_adresse):
|
|||
call_command('cron', 'hourly')
|
||||
mocked_get.call_count == 1
|
||||
|
||||
|
||||
@mock.patch('passerelle.utils.Request.get')
|
||||
def test_base_adresse_command_update_97x(mocked_get, db, base_adresse_97x):
|
||||
filepath = os.path.join(os.path.dirname(__file__), 'data', 'update_streets_test.bz2')
|
||||
|
@ -162,6 +201,7 @@ def test_base_adresse_command_update_97x(mocked_get, db, base_adresse_97x):
|
|||
mocked_get.assert_called_once_with('http://bano.openstreetmap.fr/BAN_odbl/BAN_odbl_974-json.bz2')
|
||||
assert StreetModel.objects.count() == 2
|
||||
|
||||
|
||||
@mock.patch('passerelle.utils.Request.get')
|
||||
def test_base_adresse_command_update_corsica(mocked_get, db, base_adresse_corsica):
|
||||
filepath = os.path.join(os.path.dirname(__file__), 'data', 'update_streets_test.bz2')
|
||||
|
@ -172,6 +212,7 @@ def test_base_adresse_command_update_corsica(mocked_get, db, base_adresse_corsic
|
|||
mocked_get.assert_any_call('http://bano.openstreetmap.fr/BAN_odbl/BAN_odbl_2B-json.bz2')
|
||||
assert StreetModel.objects.count() == 0
|
||||
|
||||
|
||||
@mock.patch('passerelle.utils.Request.get')
|
||||
def test_base_adresse_command_update_multiple(mocked_get, db, base_adresse_multiple):
|
||||
filepath = os.path.join(os.path.dirname(__file__), 'data', 'update_streets_test.bz2')
|
||||
|
|
Loading…
Reference in New Issue