@@ -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