Skip to content
Extraits de code Groupes Projets
Valider 96d594fc rédigé par Julien - Le Filament's avatar Julien - Le Filament
Parcourir les fichiers

[FIX] handle rate limit

parent fe5f34f6
Branches
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -95,6 +95,7 @@ class ResPartner(models.Model): ...@@ -95,6 +95,7 @@ class ResPartner(models.Model):
UTILS: renvoi l objet etablissement du siege UTILS: renvoi l objet etablissement du siege
""" """
# check si l etablissement principal est le siege # check si l etablissement principal est le siege
if inpi_data.formality.content.personneMorale:
ets_prin = inpi_data.formality.content.personneMorale.etablissementPrincipal ets_prin = inpi_data.formality.content.personneMorale.etablissementPrincipal
if ( if (
...@@ -174,6 +175,9 @@ class ResPartner(models.Model): ...@@ -174,6 +175,9 @@ class ResPartner(models.Model):
MAJ denomination MAJ denomination
""" """
logger.info(_(f"Update denomination for {self.name}: {self.siren}")) logger.info(_(f"Update denomination for {self.name}: {self.siren}"))
if not inpi_data.formality.content.personneMorale:
return self._get_current_period()
inpi_name = ( inpi_name = (
inpi_data.formality.content.personneMorale.identite.entreprise.denomination inpi_data.formality.content.personneMorale.identite.entreprise.denomination
) )
...@@ -205,6 +209,8 @@ class ResPartner(models.Model): ...@@ -205,6 +209,8 @@ class ResPartner(models.Model):
MAJ code naf MAJ code naf
""" """
logger.info(_(f"Update code naf for {self.name}: {self.siren}")) logger.info(_(f"Update code naf for {self.name}: {self.siren}"))
if not inpi_data.formality.content.personneMorale:
return self._get_current_period()
inpi_naf_id = self._get_inpi_naf_id( inpi_naf_id = self._get_inpi_naf_id(
inpi_data.formality.content.personneMorale.identite.entreprise.codeApe inpi_data.formality.content.personneMorale.identite.entreprise.codeApe
) )
...@@ -280,6 +286,7 @@ class ResPartner(models.Model): ...@@ -280,6 +286,7 @@ class ResPartner(models.Model):
""" """
UTILS: get facility data from siret UTILS: get facility data from siret
""" """
if inpi_data.formality.content.personneMorale:
inpi_facilities = ( inpi_facilities = (
inpi_data.formality.content.personneMorale.autresEtablissements inpi_data.formality.content.personneMorale.autresEtablissements
) )
...@@ -331,6 +338,8 @@ class ResPartner(models.Model): ...@@ -331,6 +338,8 @@ class ResPartner(models.Model):
Les nouveaux sont créées on ne fait rien pour ceux qui ne sont plus dans INPI Les nouveaux sont créées on ne fait rien pour ceux qui ne sont plus dans INPI
""" """
logger.info(_(f"Update etablissement for {self.name}: {self.siren}")) logger.info(_(f"Update etablissement for {self.name}: {self.siren}"))
inpi_facilities = None
if inpi_data.formality.content.personneMorale:
inpi_facilities = ( inpi_facilities = (
inpi_data.formality.content.personneMorale.autresEtablissements inpi_data.formality.content.personneMorale.autresEtablissements
) )
...@@ -386,7 +395,7 @@ class ResPartner(models.Model): ...@@ -386,7 +395,7 @@ class ResPartner(models.Model):
Les dirigants sont créées via le modele cgscop.inpi.director Les dirigants sont créées via le modele cgscop.inpi.director
""" """
logger.info(_(f"Update dirigeants for {self.name}: {self.siren}")) logger.info(_(f"Update dirigeants for {self.name}: {self.siren}"))
if inpi_data.formality.content.personneMorale.composition: if inpi_data.formality.content.personneMorale and inpi_data.formality.content.personneMorale.composition:
inpi_pouvoirs = ( inpi_pouvoirs = (
inpi_data.formality.content.personneMorale.composition.pouvoirs inpi_data.formality.content.personneMorale.composition.pouvoirs
) )
......
# © 2020 Le Filament (<http://www.le-filament.com>) # © 2020 Le Filament (<http://www.le-filament.com>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import fields, models from odoo import fields, models
class InpiUpdateWizard(models.TransientModel): class InpiUpdateWizard(models.TransientModel):
_name = "inpi.update.wizard" _name = "inpi.update.wizard"
_description = "Update inpi wizard" _description = "Update inpi wizard"
...@@ -30,6 +28,8 @@ class InpiUpdateWizard(models.TransientModel): ...@@ -30,6 +28,8 @@ class InpiUpdateWizard(models.TransientModel):
def update(self): def update(self):
rate_limit_max_by_minute = 100
if self.all_scop == "all": if self.all_scop == "all":
scop_to_update = self.env["res.partner"].search( scop_to_update = self.env["res.partner"].search(
[ [
...@@ -42,7 +42,12 @@ class InpiUpdateWizard(models.TransientModel): ...@@ -42,7 +42,12 @@ class InpiUpdateWizard(models.TransientModel):
else: else:
scop_to_update = self.partner_ids scop_to_update = self.partner_ids
for scop in scop_to_update: # due to rate limit we launch batch of queue every minute
eta = 1
for nb_jobs, scop in enumerate(scop_to_update):
if nb_jobs and nb_jobs % rate_limit_max_by_minute == 0:
eta += 60
scop.sudo().with_delay( scop.sudo().with_delay(
description=f"Mise à jours INPI: {scop.name}" description=f"Mise à jours INPI: {scop.name}", eta=eta
).update_from_inpi(update_type="all") ).update_from_inpi(update_type="all")
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter