Projet

Général

Profil

Development #56832

Action de Wf externe : avoir une option pour ne pas loguer les erreurs

Ajouté par Stéphane Laget il y a plus de 2 ans. Mis à jour il y a plus de 2 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
09 septembre 2021
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

Dans un WF de fiche, j'ai besoin à partir d'une fiche principale modèle A de créer n fiches liées modèle B.
Certaines fiches liées peuvent par la suite être supprimées.

Lorsqu'une action de wf externe cherchent à agir sur les fiches liées, le fait d'avoir supprimé préalablement des fiches liées génère une erreur visible dans le wf.
Mais tout se passe bien fonctionnellement.

"Impossible de trouver « Habilitations » lié par l’identifiant 24" 

Je voudrais pouvoir explicitement ne pas loguer les erreurs pour cette action de wf externe.

(ou alternativement, ce serait pouvoir récupérer la liste des fiches liées encore existantes, et spécifier que l'action de wf externe ne doit pouvoir s'exécuter que sur ces fiches.
avec une requête type {{ cards|objects:"XXXXX"|filter_by_user:form_user|getlist:"form_internal_id }}, mais ce serait un autre ticket : #56847).


Fichiers

Révisions associées

Révision 59a4fcb4 (diff)
Ajouté par Thomas Noël il y a plus de 2 ans

external_workflow: do not record error on missing target (#56832)

Historique

#2

Mis à jour par Stéphane Laget il y a plus de 2 ans

  • Description mis à jour (diff)
#3

Mis à jour par Thomas Noël il y a plus de 2 ans

Effectivement lors du parcours des fiches liées en vue de l'exécution de l'action, on loggue une erreur "normale" si une des fiches liées n'est pas présente. Ca se passe dans formdata.iter_target_datas :

        for (slug, target_id, origin) in data_ids:
            if object_type:
                # workflow action
                try:
                    yield objectdef.data_class().get(target_id)
                except KeyError as e:
                    # use custom error message depending on target type
                    get_publisher().record_error(
                        _('Could not find linked "%(object_name)s" object by id %(object_id)s')
                        % {'object_name': objectdef.name, 'object_id': target_id},
                        formdata=self,
                        status_item=status_item,
                        exception=e,
                    )
(...)

On pourrait effectivement avoir un flag "ne pas logguer si une fiche liée n'existe plus", ça me semblerait une option un peu bizarre... Autre solution, supprimer complétement ce log, avec le risque de ne plus comprendre ce qui dérape parfois...

Je ne vois pas de troisième voie.

#4

Mis à jour par Thomas Noël il y a plus de 2 ans

  • Assigné à mis à Thomas Noël
#5

Mis à jour par Frédéric Péters il y a plus de 2 ans

(je suis plutôt à préférer ne pas avoir d'option, et simplement ne pas logguer)

#6

Mis à jour par Thomas Noël il y a plus de 2 ans

On choisi de ne plus enregistrer d'erreur quand une fiche liée à la demande n'existe plus. À noter qu'on continuera à en enregistrer une dans le cas d'une cible manuelle : je ne supprime pas ça.

#7

Mis à jour par Benjamin Dauvergne il y a plus de 2 ans

  • Statut changé de Solution proposée à Solution validée
#8

Mis à jour par Thomas Noël il y a plus de 2 ans

  • Statut changé de Solution validée à Résolu (à déployer)
commit 59a4fcb485bd73038e2c97d47b71883069b39682
Author: Thomas NOËL <tnoel@entrouvert.com>
Date:   Fri Sep 10 11:35:43 2021 +0200

    external_workflow: do not record error on missing target (#56832)

#9

Mis à jour par Frédéric Péters il y a plus de 2 ans

  • Statut changé de Résolu (à déployer) à Solution déployée

Formats disponibles : Atom PDF