Skip to content

Commit 49053bc

Browse files
mlvernayDestinyyyy
authored andcommitted
V2
1 parent 0019ad0 commit 49053bc

File tree

2 files changed

+23
-8
lines changed

2 files changed

+23
-8
lines changed

erp/management/commands/api_entreprises_clean_closed.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,9 @@ def handle(self, *args, **options):
6666
query = f"{erp.numero} {erp.voie}" if erp.numero else erp.lieu_dit
6767
query = f"{erp.nom}, {query} {erp.code_postal} {erp.commune}"
6868

69-
if check_closed(query, erp.commune_ext.code_insee):
69+
query_address = f"{erp.numero} {erp.voie}" if erp.numero else erp.lieu_dit
70+
query_address = f"{query_address} {erp.code_postal} {erp.commune}"
71+
if check_closed(erp.nom, query_address, erp.commune_ext.code_insee):
7072
self._flag_erp_as_closed(erp)
7173
continue
7274

erp/provider/entreprise.py

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -125,23 +125,36 @@ def search(terms, code_insee, activities):
125125
raise RuntimeError(f"entreprise api error: {err}")
126126

127127

128-
def check_closed(term, code_insee):
128+
def check_closed(name, address, code_insee):
129+
term = f"{name}, {address}"
129130
payload = {
130131
"per_page": MAX_PER_PAGE,
131132
"page": 1,
132133
"q": term,
133134
"code_insee": code_insee,
134135
"categorie_entreprise": "PME,ETI",
135136
}
136-
res = requests.get(
137-
f"{BASE_URL_ENTERPRISE_API}",
138-
payload,
139-
timeout=5,
140-
)
137+
res = requests.get(f"{BASE_URL_ENTERPRISE_API}", payload, timeout=5)
141138
try:
142139
if not (len(results := (res.json().get("results") or [])) == 1):
143140
return False
144141
except (requests.exceptions.JSONDecodeError, requests.exceptions.ReadTimeout):
145142
return False
146143

147-
return results[0].get("siege", {}).get("date_fermeture") is not None
144+
closed = results[0].get("siege", {}).get("date_fermeture") is not None
145+
if not closed:
146+
return False
147+
148+
# Do the same request without the erp name parameter nor the code_insee to obtain other ERPs at the same address.
149+
# If we have more than one result, we can't consider the ERP as closed.
150+
payload["q"] = address
151+
del payload["code_insee"]
152+
153+
res = requests.get(f"{BASE_URL_ENTERPRISE_API}", payload, timeout=5)
154+
try:
155+
if len(res.json().get("results") or []) > 1:
156+
return False
157+
except (requests.exceptions.JSONDecodeError, requests.exceptions.ReadTimeout):
158+
return False
159+
160+
return True

0 commit comments

Comments
 (0)