From c92eefdc5b975d88bc08de4ce7a070efed84e04e Mon Sep 17 00:00:00 2001 From: benjamin <benjamin@le-filament.com> Date: Thu, 7 Mar 2024 15:15:28 +0100 Subject: [PATCH] [REF] add queue for LM publication and refactor function --- __manifest__.py | 1 + models/scop_liste_ministere.py | 73 +++++++++++++++------------------- 2 files changed, 33 insertions(+), 41 deletions(-) diff --git a/__manifest__.py b/__manifest__.py index 2f1eac3..186fe72 100644 --- a/__manifest__.py +++ b/__manifest__.py @@ -10,6 +10,7 @@ "depends": [ "cgscop_liasse_fiscale", "cgscop_facility", + "queue_job", "mail_tracking", ], "data": [ diff --git a/models/scop_liste_ministere.py b/models/scop_liste_ministere.py index 1fe5334..e979ad6 100644 --- a/models/scop_liste_ministere.py +++ b/models/scop_liste_ministere.py @@ -1435,66 +1435,57 @@ class ScopListeMinistere(models.Model): self.lm_maj_prestataires() # STATUSBAR - def action_publish_extranet(self): + def _publish_extranet(self, composer=False): """ This function opens a window to compose an email, with the edi liste Ministere template message loaded by default + """ self.ensure_one() if not self.recipient_ids: raise UserError(_("Email manquant. Ce dossier ne peut être publié.")) - template = self.env.ref( - "cgscop_liste_ministere.email_template_liste_ministere_publish" + template_id = self.env.ref( + "cgscop_liste_ministere.email_template_liste_ministere_publish", + raise_if_not_found=True ) - template_id = template if template else False + if not self.status == "1_ouvert": + raise UserError(_("Ce dossier est déjà publié ou validé.")) + self.update_data_lm() - return self.with_context(lm_publish_action=True).action_open_mail(template_id) + self.update({"status": "2_publie"}) - def action_publish_extranet_mass(self): - ir_model_data = self.env["ir.model.data"] - try: - composer_form_view_id = ir_model_data.get_object_reference( - "mail", "email_compose_message_wizard_form" - )[1] - except ValueError: - composer_form_view_id = False - template = self.env.ref( - "cgscop_liste_ministere.email_template_liste_ministere_publish" - ) - template_id = template.id if template else False + if composer: + return self.with_context(lm_publish_action=True).action_open_mail(template_id) + else: + template_id.send_mail(self.id) + def action_publish_extranet(self): + """ + Ouvre le composer pour publier un dossier sur l'extranet avec envoi d'email + """ + self.ensure_one() + return self._publish_extranet(composer=True) + + def action_publish_extranet_mass(self): + """ + Sélectionne les dossiers ouverts et dont les emails sont renseignés + Met en file d'attente la publication sur l'extranet pour chacun des dossiers + avec envoi du mail + """ # Get lm to publish lm_ids = self.filtered(lambda lm: lm.status == "1_ouvert" and lm.recipient_ids) if lm_ids: for lm in lm_ids: - lm.update_data_lm() - return { - "type": "ir.actions.act_window", - "view_mode": "form", - "res_model": "mail.compose.message", - "view_id": composer_form_view_id, - "target": "new", - "context": { - "default_composition_mode": "mass_mail" - if len(self.ids) > 1 - else "comment", - "default_res_id": self.ids[0], - "default_model": "scop.liste.ministere", - "default_use_template": bool(template_id), - "default_template_id": template_id, - "active_ids": lm_ids.ids, - "lm_publish_action": True, - }, - } + lm.with_delay( + description=("Publication LM : %s" % lm.name))._publish_extranet() else: - message = ( - "Les dossiers sélectionnés ont déjà été " - "publiés ou n'ont pas d'adesse mail" - ) return { "type": "ir.actions.act_window.message", "title": _("Publication des dossiers"), - "message": _(message), + "message": _( + "Les dossiers sélectionnés ont déjà été " + "publiés ou n'ont pas d'adresse mail" + ), } def action_publish_without_extranet(self): -- GitLab