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):
PROFILE_CHOICES = (
('LIEGE','Liege'),
('LIEGE_V2','Liege lisrue2'),
('NAMUR','Namur'),
("LIEGE", "Liege"),
("LIEGE_V2", "Liege lisrue2"),
("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,
verbose_name=_('Check HTTPS Certificate validity'))
verify_cert = models.BooleanField(
default=True, verbose_name=_("Check HTTPS Certificate validity")
)
category = _("Geographic information system")
category = _('Geographic information system')
class Meta:
verbose_name = _('Liege Lisrue Service')
verbose_name = _("Liege Lisrue Service")
@classmethod
def get_verbose_name(cls):
@ -54,91 +61,117 @@ class ImioLiegeLisrue(BaseResource):
@classmethod
def get_icon_class(cls):
return 'gis'
return "gis"
@classmethod
def get_connector_slug(cls):
return 'imio-liege-lisrue'
return "imio-liege-lisrue"
@endpoint()
def voies(self, request, q=None, **kwargs):
url = self.service_url
if self.profile == 'LIEGE_V2':
if self.profile == "LIEGE_V2":
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:
url += 'jsonlgrue2com/'
url += "jsonlgrue2com/"
else:
if self.include_all_of_belgium:
url += 'jsonlisrue/'
url += "jsonlisrue/"
else:
url += 'jsonlisrue2/'
url += "jsonlisrue2/"
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()
result = requests.get(url, headers={'Accept': 'application/json'},
verify=self.verify_cert).json()
if result.has_key('data'):
result['rues'] = result.pop('data')
if isinstance(result['rues'], list):
lisrues = result['rues']
elif isinstance(result['rues'], dict) and 'return' in result['rues']:
lisrues = [result['rues']['return']]
elif isinstance(result['rues'], dict) and 'rue' in result['rues']:
lisrues = [result['rues']['rue']]
result = requests.get(
url, headers={"Accept": "application/json"}, verify=self.verify_cert
).json()
if result.has_key("data"):
result["rues"] = result.pop("data")
if isinstance(result["rues"], list):
lisrues = result["rues"]
elif isinstance(result["rues"], dict) and "return" in result["rues"]:
lisrues = [result["rues"]["return"]]
elif isinstance(result["rues"], dict) and "rue" in result["rues"]:
lisrues = [result["rues"]["rue"]]
else:
lisrues = []
streets = []
known_street_labels = {}
for item in lisrues:
if item.get('rue') or item.get('libelle'):
street_label = item.get('rue') or item.get('libelle')
elif item.get('libelleMinuscule'):
street_label = '%s %s' % (
item.get('particuleMinuscule') or '',
item.get('libelleMinuscule'))
if item.get("rue") or item.get("libelle"):
street_label = item.get("rue") or item.get("libelle")
elif item.get("libelleMinuscule"):
street_label = "%s %s" % (
item.get("particuleMinuscule") or "",
item.get("libelleMinuscule"),
)
else:
continue
if street_label in known_street_labels:
continue
known_street_labels[street_label] = True
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:
street_label = street_label.strip()
streets.append({
'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({
'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}
streets.append(
{
"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(
{
"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()
def voies_namur(self, request, q=None, postCode=None, **kwargs):
if q is None:
return {'data':[]}
return {"data": []}
else:
url = self.service_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())
result = requests.get(url, headers={'Accept': 'application/json'},
verify=self.verify_cert).json()
result = requests.get(
url, headers={"Accept": "application/json"}, verify=self.verify_cert
).json()
streets = []
for item in result:
if item.get('postCode') == postCode or postCode is None:
street_label = item.get('rueNom')
streets.append({
'id':item.get('rueCode'),
'text':street_label,
'postCode':item.get('postCode'),
})
return {'data': streets}
if item.get("postCode") == postCode or postCode is None:
street_label = item.get("rueNom")
streets.append(
{
"id": item.get("rueCode"),
"text": street_label,
"postCode": item.get("postCode"),
}
)
return {"data": streets}