Ajout du frontend et branchement sur l'API axione #9
8 changed files with 142 additions and 19 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -1,2 +1,3 @@
|
|||
__pycache__
|
||||
/elig-test.ini
|
||||
.vscode
|
|
@ -90,7 +90,6 @@ def query_axione(cfg, body):
|
|||
print(headers)
|
||||
print("BODY: ")
|
||||
print(body)
|
||||
print("===================")
|
||||
with open("./fixtures/dummy-data-1.xml", "r") as f:
|
||||
dummyData = f.read()
|
||||
return dummyData
|
||||
|
@ -121,17 +120,45 @@ class BatimentResult(TypedDict):
|
|||
referenceBatiment: str
|
||||
etages: list[EtageResult]
|
||||
|
||||
class AxioneErreur(TypedDict):
|
||||
codeErreur: str
|
||||
libelleErreur: str
|
||||
|
||||
def parse_response(resp_str) -> list[BatimentResult]:
|
||||
class AxioneResult(TypedDict):
|
||||
codeRetour: int
|
||||
axioneErreur: AxioneErreur
|
||||
batiments: list[BatimentResult]
|
||||
|
||||
|
||||
def parse_response(resp_str) -> AxioneResult:
|
||||
root = ET.fromstring(resp_str)
|
||||
parsedBatiments = [
|
||||
parse_batiment(b)
|
||||
for b in root.findall(
|
||||
".//{http://structureadresseftth.axione.fr/model/commun}batiment"
|
||||
)
|
||||
]
|
||||
return parsedBatiments
|
||||
|
||||
codeRetourXml = root.find(
|
||||
".//{http://structureadresseftth.axione.fr/model/commun}codeRetour"
|
||||
)
|
||||
codeRetour = int(codeRetourXml.text.strip())
|
||||
axioneErreur = None
|
||||
parsedBatiments = []
|
||||
if codeRetour == 0:
|
||||
parsedBatiments = [
|
||||
parse_batiment(b)
|
||||
for b in root.findall(
|
||||
".//{http://structureadresseftth.axione.fr/model/commun}batiment"
|
||||
)
|
||||
]
|
||||
else:
|
||||
axioneErreur = AxioneErreur(
|
||||
codeErreur = root.find(
|
||||
".//{http://structureadresseftth.axione.fr/model/commun}codeErreur"
|
||||
).text.strip(),
|
||||
libelleErreur = root.find(
|
||||
".//{http://structureadresseftth.axione.fr/model/commun}libelleErreur"
|
||||
).text.strip()
|
||||
)
|
||||
return AxioneResult(
|
||||
codeRetour=codeRetour,
|
||||
axioneErreur=axioneErreur,
|
||||
batiments=parsedBatiments
|
||||
)
|
||||
|
||||
def parse_batiment(batiment) -> BatimentResult:
|
||||
etatBatiment = batiment.get("etatBatiment", None)
|
||||
|
|
46
fixtures/dummy-data-2.xml
Normal file
46
fixtures/dummy-data-2.xml
Normal file
|
@ -0,0 +1,46 @@
|
|||
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
|
||||
<SOAP-ENV:Header />
|
||||
<SOAP-ENV:Body>
|
||||
<ns3:obtentionStructureAdresseReponseSoap xmlns:ns2="http://structureadresseftth.axione.fr/model/commun" xmlns:ns3="http://structureadresseftth.axione.fr/model/entreprise">
|
||||
<ns3:entete horodatageReponse="2022-02-13T00:57:50.773+01:00" horodatageRequete="2022-02-12T23:57:48.974060Z" identifiantReponse="1644710270773" versionWS="3.0">
|
||||
<ns2:operateurCommercial identifiant="" nom="AQUILENET" />
|
||||
</ns3:entete>
|
||||
<ns3:codeRetour>
|
||||
<ns2:codeRetour>0</ns2:codeRetour>
|
||||
</ns3:codeRetour>
|
||||
<ns3:codeOI>BEFO</ns3:codeOI>
|
||||
<ns3:etatImmeuble>true</ns3:etatImmeuble>
|
||||
<ns3:structureDetaillee>
|
||||
<ns2:adresse referenceHexacle="361992226N">
|
||||
<ns2:referenceRivoli codeInsee="36199" codeRivoli="0031" numeroVoie="48" />
|
||||
</ns2:adresse>
|
||||
<ns2:batiment conditionsSyndic="false" dateDebutAcceptationCmdAcces="2021-09-14T00:00:00.000+02:00" dateDebutFournitureCRCmdAcces="2021-09-14T00:00:00.000+02:00" etatBatiment="COMMERCIALISABLE" identifiantImmeuble="BAT36-7C32FE6AD11F4A6797E4F29E" nombreLogementsImmeuble="1" referenceBatiment="NA">
|
||||
<ns2:referenceGeographique coordonneeImmeubleX="2.027143270510003" coordonneeImmeubleY="47.01243491007431" typeProjection="WGS84" />
|
||||
<ns2:escalier reference="NA">
|
||||
<ns2:etage nombreLignesActives="0" nombreLignesExistantes="0" nombreLocauxFTTH="1" refPriseCommandeObligatoire="false" reference="RDC">
|
||||
<ns2:listePbo>
|
||||
<ns2:pbo referencePBO="PBO36_ISS1_139" typePbo="AERIEN" />
|
||||
</ns2:listePbo>
|
||||
<ns2:listeLignesFTTH>
|
||||
<ns2:ligneFTTH>
|
||||
<ns2:prise etiquetteAPoser="Non" referencePBO="PBO36_ISS1_139">
|
||||
<ns2:referencePTO>BF-ISS1-0110</ns2:referencePTO>
|
||||
<ns2:referencePrisePromoteur />
|
||||
<ns2:statutLigneFTTH actif="false" commercialisable="true" existant="false" raccordable="true" rompu="false" />
|
||||
</ns2:prise>
|
||||
</ns2:ligneFTTH>
|
||||
<ns2:ligneFTTH>
|
||||
<ns2:local localisationLocalOC="" localisationLocalOI="" />
|
||||
</ns2:ligneFTTH>
|
||||
</ns2:listeLignesFTTH>
|
||||
<ns2:pm referencePM="ADR_36199_ISS1" referencePMT="PMT_36199_ISS1">
|
||||
<ns2:typeEmplacementPM>PME</ns2:typeEmplacementPM>
|
||||
<ns2:responsableBrassage>OC</ns2:responsableBrassage>
|
||||
</ns2:pm>
|
||||
</ns2:etage>
|
||||
</ns2:escalier>
|
||||
</ns2:batiment>
|
||||
</ns3:structureDetaillee>
|
||||
</ns3:obtentionStructureAdresseReponseSoap>
|
||||
</SOAP-ENV:Body>
|
||||
</SOAP-ENV:Envelope>
|
36
fixtures/dummy-data-3.xml
Normal file
36
fixtures/dummy-data-3.xml
Normal file
|
@ -0,0 +1,36 @@
|
|||
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
|
||||
<SOAP-ENV:Header />
|
||||
<SOAP-ENV:Body>
|
||||
<ns3:obtentionStructureAdresseReponseSoap xmlns:ns2="http://structureadresseftth.axione.fr/model/commun" xmlns:ns3="http://structureadresseftth.axione.fr/model/entreprise">
|
||||
<ns3:entete horodatageReponse="2022-02-13T00:55:44.339+01:00" horodatageRequete="2022-02-12T23:55:42.382844Z" identifiantReponse="1644710144339" versionWS="3.0">
|
||||
<ns2:operateurCommercial identifiant="" nom="AQUILENET" />
|
||||
</ns3:entete>
|
||||
<ns3:codeRetour>
|
||||
<ns2:codeRetour>1</ns2:codeRetour>
|
||||
<ns2:codeErreur>I01</ns2:codeErreur>
|
||||
<ns2:libelleErreur>Code Rivoli introuvable, manquant ou incomplet</ns2:libelleErreur>
|
||||
</ns3:codeRetour>
|
||||
<ns3:codeOI />
|
||||
<ns3:structureDetaillee>
|
||||
<ns2:adresse />
|
||||
<ns2:batiment referenceBatiment="">
|
||||
<ns2:referenceGeographique coordonneeImmeubleX="" coordonneeImmeubleY="" typeProjection="" />
|
||||
<ns2:escalier reference="">
|
||||
<ns2:etage refPriseCommandeObligatoire="false" reference="">
|
||||
<ns2:listePbo>
|
||||
<ns2:pbo referencePBO="" typePbo="" typeRaccoPbPTO="" />
|
||||
</ns2:listePbo>
|
||||
<ns2:listeLignesFTTH>
|
||||
<ns2:ligneFTTH />
|
||||
</ns2:listeLignesFTTH>
|
||||
<ns2:pm referencePM="" referencePMT="">
|
||||
<ns2:typeEmplacementPM>PME</ns2:typeEmplacementPM>
|
||||
<ns2:responsableBrassage>OI</ns2:responsableBrassage>
|
||||
</ns2:pm>
|
||||
</ns2:etage>
|
||||
</ns2:escalier>
|
||||
</ns2:batiment>
|
||||
</ns3:structureDetaillee>
|
||||
</ns3:obtentionStructureAdresseReponseSoap>
|
||||
</SOAP-ENV:Body>
|
||||
</SOAP-ENV:Envelope>
|
|
@ -7,8 +7,8 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"
|
||||
integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
|
||||
<script src="https://code.jquery.com/jquery-3.6.0.min.js"
|
||||
integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>
|
||||
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"
|
||||
integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"
|
||||
integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1"
|
||||
crossorigin="anonymous"></script>
|
||||
|
|
|
@ -11,11 +11,12 @@
|
|||
</head>
|
||||
|
||||
<body>
|
||||
<h1 id="aquilenet-title">Aquilenet</h1>
|
||||
<div id="container">
|
||||
<h1 class="text-center" id="aquilenet-title">Aquilenet</h1>
|
||||
{% if result['codeRetour'] == 0 %}
|
||||
<div id="containerResults" class="container">
|
||||
<h1 id="main-title">Test d'Éligibilité FTTH Aquilenet: Résultats</h1>
|
||||
<p>Résultat pour le PTO: {{ pto }}</p>
|
||||
{% for batiment in result %}
|
||||
{% for batiment in result['batiments'] %}
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
|
@ -58,5 +59,12 @@
|
|||
</table>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% else %}
|
||||
<div id="containerResults" class="container">
|
||||
<h1 id="main-title">Erreur</h1>
|
||||
<p>Code d'erreur: {{ result['axioneErreur']['codeErreur'] }}</p>
|
||||
<p>Description de l'erreur: {{ result['axioneErreur']['libelleErreur'] }}</p>
|
||||
</div>
|
||||
{% endif %}
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -93,7 +93,7 @@ form {
|
|||
align-self: center;
|
||||
margin-bottom: 2em;
|
||||
}
|
||||
|
||||
*/
|
||||
table,td {
|
||||
border: 2px solid #333;
|
||||
border-collapse: collapse;
|
||||
|
@ -107,4 +107,4 @@ thead, tfoot {
|
|||
td {
|
||||
padding-left: 1em;
|
||||
padding-right: 1em;
|
||||
} */
|
||||
}
|
||||
|
|
|
@ -58,7 +58,12 @@ def test_address():
|
|||
numeroVoie = escape(request.form['numeroVoie'])
|
||||
# Trimming rivoli's key
|
||||
codeRivoli = escape(request.form['codeRivoli'])[:-1]
|
||||
result = query_axione_fantoir(cfg, codeInsee, codeRivoli, numeroVoie)
|
||||
result = parse_response(query_axione_fantoir(cfg, codeInsee, codeRivoli, numeroVoie))
|
||||
if cfg.debug:
|
||||
print("===================")
|
||||
print("Dummy response: ")
|
||||
print(result)
|
||||
print("===================")
|
||||
return render_template("result.html", pto="", result=result)
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue