From 237ff0e355b18adbd2d8de99c845cfb322dcfddd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20P=C3=A9ters?= Date: Mon, 29 Jun 2020 17:37:48 +0200 Subject: [PATCH] update check duplicate script to use SQL criterias (#44561) --- extra/scripts/checkDuplicate.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/extra/scripts/checkDuplicate.py b/extra/scripts/checkDuplicate.py index dd99244..1d1594b 100644 --- a/extra/scripts/checkDuplicate.py +++ b/extra/scripts/checkDuplicate.py @@ -1,17 +1,18 @@ """ Vérifie qu'il n'existe pas déja un formulaire soumis par l'utilisateur connecté ayant le meme dpap (numéro de dossier papier) """ +from wcs.qommon.storage import (Equal, NotEqual) + # id du champ contenant le DPAP field_id = [x for x in form_objects.formdef.fields if x.varname == 'dpap'][0].id noDuplicate = '' -try: - form_user_name_identifier_0 -except NameError: - # Si user anonyme on le laisse passer - noDuplicate = True +if form.user is None: + # Si user anonyme on le laisse passer + noDuplicate = True else: - # Si user connecté on check un eventuel doublon : False si doublon, True si pas doublon - noDuplicate = bool(len([x for x in form_objects.formdef.data_class().select() if x.get_user() and x.data.get(field_id) == form_var_dpap and x.get_user().name_identifiers[0] == form_user_name_identifier_0 and not x.is_draft()]) == 0) + # Si user connecté on check un eventuel doublon : False si doublon, True si pas doublon + criterias = [Equal('user_id', str(form.user.id)), NotEqual('status', 'draft')] + noDuplicate = bool(len([x for x in form_objects.formdef.data_class().select(criterias) if x.data.get(field_id) == form_var_dpap]) == 0) result = noDuplicate