Skip to content

Commit 9bc17f9

Browse files
committed
V2
1 parent 466c2af commit 9bc17f9

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
@@ -123,23 +123,36 @@ def search(terms, code_insee, activities):
123123
raise RuntimeError(f"entreprise api error: {err}")
124124

125125

126-
def check_closed(term, code_insee):
126+
def check_closed(name, address, code_insee):
127+
term = f"{name}, {address}"
127128
payload = {
128129
"per_page": MAX_PER_PAGE,
129130
"page": 1,
130131
"q": term,
131132
"code_insee": code_insee,
132133
"categorie_entreprise": "PME,ETI",
133134
}
134-
res = requests.get(
135-
f"{BASE_URL_ENTERPRISE_API}",
136-
payload,
137-
timeout=5,
138-
)
135+
res = requests.get(f"{BASE_URL_ENTERPRISE_API}", payload, timeout=5)
139136
try:
140137
if not (len(results := (res.json().get("results") or [])) == 1):
141138
return False
142139
except (requests.exceptions.JSONDecodeError, requests.exceptions.ReadTimeout):
143140
return False
144141

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

0 commit comments

Comments
 (0)