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
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -95,6 +95,7 @@ class ResPartner(models.Model):
UTILS: renvoi l objet etablissement du siege
"""
# check si l etablissement principal est le siege
if inpi_data.formality.content.personneMorale:
ets_prin = inpi_data.formality.content.personneMorale.etablissementPrincipal
if (
......@@ -174,6 +175,9 @@ class ResPartner(models.Model):
MAJ denomination
"""
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_data.formality.content.personneMorale.identite.entreprise.denomination
)
......@@ -205,6 +209,8 @@ class ResPartner(models.Model):
MAJ code naf
"""
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_data.formality.content.personneMorale.identite.entreprise.codeApe
)
......@@ -280,6 +286,7 @@ class ResPartner(models.Model):
"""
UTILS: get facility data from siret
"""
if inpi_data.formality.content.personneMorale:
inpi_facilities = (
inpi_data.formality.content.personneMorale.autresEtablissements
)
......@@ -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
"""
logger.info(_(f"Update etablissement for {self.name}: {self.siren}"))
inpi_facilities = None
if inpi_data.formality.content.personneMorale:
inpi_facilities = (
inpi_data.formality.content.personneMorale.autresEtablissements
)
......@@ -386,7 +395,7 @@ class ResPartner(models.Model):
Les dirigants sont créées via le modele cgscop.inpi.director
"""
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_data.formality.content.personneMorale.composition.pouvoirs
)
......
# © 2020 Le Filament (<http://www.le-filament.com>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import fields, models
class InpiUpdateWizard(models.TransientModel):
_name = "inpi.update.wizard"
_description = "Update inpi wizard"
......@@ -30,6 +28,8 @@ class InpiUpdateWizard(models.TransientModel):
def update(self):
rate_limit_max_by_minute = 100
if self.all_scop == "all":
scop_to_update = self.env["res.partner"].search(
[
......@@ -42,7 +42,12 @@ class InpiUpdateWizard(models.TransientModel):
else:
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(
description=f"Mise à jours INPI: {scop.name}"
description=f"Mise à jours INPI: {scop.name}", eta=eta
).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