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