black the models!

This commit is contained in:
Christophe Boulanger 2019-12-04 11:02:13 +01:00
parent 6337bc8d20
commit 1a679611c2
1 changed files with 96 additions and 63 deletions

View File

@ -28,25 +28,32 @@ from passerelle.utils.api import endpoint
class ImioLiegeLisrue(BaseResource): class ImioLiegeLisrue(BaseResource):
PROFILE_CHOICES = ( PROFILE_CHOICES = (
('LIEGE','Liege'), ("LIEGE", "Liege"),
('LIEGE_V2','Liege lisrue2'), ("LIEGE_V2", "Liege lisrue2"),
('NAMUR','Namur'), ("NAMUR", "Namur"),
)
service_url = models.CharField(
max_length=128,
blank=False,
verbose_name=_("Service URL"),
help_text=_("SIG Web Service URL (ex: https://e-services.liege.be:8443/)"),
)
profile = models.CharField(max_length=100, choices=PROFILE_CHOICES, default="Liege")
include_all_of_belgium = models.BooleanField(
default=True, verbose_name=_("Include all of Belgium")
)
street_with_postal_code = models.BooleanField(
default=False, verbose_name=_("Return street with postal code")
) )
service_url = models.CharField(max_length=128, blank=False,
verbose_name=_('Service URL'),
help_text=_('SIG Web Service URL (ex: https://e-services.liege.be:8443/)'))
profile = models.CharField(max_length=100, choices=PROFILE_CHOICES, default='Liege')
include_all_of_belgium = models.BooleanField(default=True,
verbose_name=_('Include all of Belgium'))
street_with_postal_code = models.BooleanField(default=False,
verbose_name=_('Return street with postal code'))
verify_cert = models.BooleanField(default=True, verify_cert = models.BooleanField(
verbose_name=_('Check HTTPS Certificate validity')) default=True, verbose_name=_("Check HTTPS Certificate validity")
)
category = _("Geographic information system")
category = _('Geographic information system')
class Meta: class Meta:
verbose_name = _('Liege Lisrue Service') verbose_name = _("Liege Lisrue Service")
@classmethod @classmethod
def get_verbose_name(cls): def get_verbose_name(cls):
@ -54,91 +61,117 @@ class ImioLiegeLisrue(BaseResource):
@classmethod @classmethod
def get_icon_class(cls): def get_icon_class(cls):
return 'gis' return "gis"
@classmethod @classmethod
def get_connector_slug(cls): def get_connector_slug(cls):
return 'imio-liege-lisrue' return "imio-liege-lisrue"
@endpoint() @endpoint()
def voies(self, request, q=None, **kwargs): def voies(self, request, q=None, **kwargs):
url = self.service_url url = self.service_url
if self.profile == 'LIEGE_V2': if self.profile == "LIEGE_V2":
if self.include_all_of_belgium: if self.include_all_of_belgium:
url += 'jsonruebelgique/findByValue?indexName=RUE&startResult=0&maxResult=30&value=' url += "jsonruebelgique/findByValue?indexName=RUE&startResult=0&maxResult=30&value="
else: else:
url += 'jsonlgrue2com/' url += "jsonlgrue2com/"
else: else:
if self.include_all_of_belgium: if self.include_all_of_belgium:
url += 'jsonlisrue/' url += "jsonlisrue/"
else: else:
url += 'jsonlisrue2/' url += "jsonlisrue2/"
if q: if q:
q = unicodedata.normalize('NFKD', request.GET['q']).encode('ascii', 'ignore') q = unicodedata.normalize("NFKD", request.GET["q"]).encode(
"ascii", "ignore"
)
url += q.lower() url += q.lower()
result = requests.get(url, headers={'Accept': 'application/json'}, result = requests.get(
verify=self.verify_cert).json() url, headers={"Accept": "application/json"}, verify=self.verify_cert
if result.has_key('data'): ).json()
result['rues'] = result.pop('data') if result.has_key("data"):
if isinstance(result['rues'], list): result["rues"] = result.pop("data")
lisrues = result['rues'] if isinstance(result["rues"], list):
elif isinstance(result['rues'], dict) and 'return' in result['rues']: lisrues = result["rues"]
lisrues = [result['rues']['return']] elif isinstance(result["rues"], dict) and "return" in result["rues"]:
elif isinstance(result['rues'], dict) and 'rue' in result['rues']: lisrues = [result["rues"]["return"]]
lisrues = [result['rues']['rue']] elif isinstance(result["rues"], dict) and "rue" in result["rues"]:
lisrues = [result["rues"]["rue"]]
else: else:
lisrues = [] lisrues = []
streets = [] streets = []
known_street_labels = {} known_street_labels = {}
for item in lisrues: for item in lisrues:
if item.get('rue') or item.get('libelle'): if item.get("rue") or item.get("libelle"):
street_label = item.get('rue') or item.get('libelle') street_label = item.get("rue") or item.get("libelle")
elif item.get('libelleMinuscule'): elif item.get("libelleMinuscule"):
street_label = '%s %s' % ( street_label = "%s %s" % (
item.get('particuleMinuscule') or '', item.get("particuleMinuscule") or "",
item.get('libelleMinuscule')) item.get("libelleMinuscule"),
)
else: else:
continue continue
if street_label in known_street_labels: if street_label in known_street_labels:
continue continue
known_street_labels[street_label] = True known_street_labels[street_label] = True
if self.street_with_postal_code: if self.street_with_postal_code:
street_label = u"{} - {}".format(street_label, str(item.get('codePostal'))).strip() street_label = u"{} - {}".format(
street_label, str(item.get("codePostal"))
).strip()
else: else:
street_label = street_label.strip() street_label = street_label.strip()
streets.append({ streets.append(
'id': item.get('codeRue') or item.get('codeStreet'), {
'text': street_label "id": item.get("codeRue") or item.get("codeStreet"),
}) "text": street_label,
if (self.profile == 'LIEGE_V2'): }
if item.get('statutVO') is not None and item.get('statutVO').get('code') == '1': )
streets.append({ if self.profile == "LIEGE_V2":
'codeCommissariat': item.get('commissariat').get('codeCommissariat') if item.get('commissariat') else '', if (
'libelleCommissariat': item.get('commissariat').get('libelleCommissariat') if item.get('commissariat') else '' item.get("statutVO") is not None
}) and item.get("statutVO").get("code") == "1"
return {'data': streets} ):
streets.append(
{
"codeCommissariat": item.get("commissariat").get(
"codeCommissariat"
)
if item.get("commissariat")
else "",
"libelleCommissariat": item.get("commissariat").get(
"libelleCommissariat"
)
if item.get("commissariat")
else "",
}
)
return {"data": streets}
@endpoint() @endpoint()
def voies_namur(self, request, q=None, postCode=None, **kwargs): def voies_namur(self, request, q=None, postCode=None, **kwargs):
if q is None: if q is None:
return {'data':[]} return {"data": []}
else: else:
url = self.service_url url = self.service_url
url = "{}?outSrid=31370".format(url) url = "{}?outSrid=31370".format(url)
q = unicodedata.normalize('NFKD', request.GET['q']).encode('ascii', 'ignore') q = unicodedata.normalize("NFKD", request.GET["q"]).encode(
"ascii", "ignore"
)
url = "{}&q={}".format(url, q.lower()) url = "{}&q={}".format(url, q.lower())
result = requests.get(url, headers={'Accept': 'application/json'}, result = requests.get(
verify=self.verify_cert).json() url, headers={"Accept": "application/json"}, verify=self.verify_cert
).json()
streets = [] streets = []
for item in result: for item in result:
if item.get('postCode') == postCode or postCode is None: if item.get("postCode") == postCode or postCode is None:
street_label = item.get('rueNom') street_label = item.get("rueNom")
streets.append({ streets.append(
'id':item.get('rueCode'), {
'text':street_label, "id": item.get("rueCode"),
'postCode':item.get('postCode'), "text": street_label,
}) "postCode": item.get("postCode"),
return {'data': streets} }
)
return {"data": streets}