Projet

Général

Profil

Development #1630

Vérifier la syntaxe des expressions de pré-remplissage

Ajouté par Benjamin Dauvergne il y a plus de 11 ans. Mis à jour il y a plus de 8 ans.

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

0%

Temps estimé:
Patch proposed:
Planning:

Description

diff --git a/wcs/fields.py b/wcs/fields.py
index 81a141a..34c072c 100644
--- a/wcs/fields.py
+++ b/wcs/fields.py
@@ -94,9 +94,12 @@ class PrefillSelectionWidget(CompositeWidget):
             value = self.get(name)
             if value:
                 values[name] = value
-        if values.get('data', '').startswith('------'):
-            values = None
         self.value = values or None
+        if values and values['type'] == 'formula' and values.get('value'):
+            try:
+                compile(values.get('value', ''), '<string>', 'eval')
+            except (SyntaxError, TypeError), e:
+                self.set_error(_('invalid expression: %s') % e)

Fichiers


Demandes liées

Lié à w.c.s. - Development #6844: Gestion des expressionsFermé27 mars 2015

Actions

Historique

#1

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

Pourquoi la suppression de ces lignes ?

-        if values.get('data', '').startswith('------'):
-            values = None
#2

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

écrivait:

La demande #1630 a été mise à jour par Frédéric Péters.

Pourquoi la suppression de ces lignes ?

> -        if values.get('data', '').startswith('------'):
> -            values = None
> 

Elle m'ont semblé ne plus servir, values ne pouvant jamais contenir la
clé 'data'. Je ferai 2 commits séparés pour l'expliquer.

#3

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

Mais ce code est peut-être encore utile face à d'anciens formdefs, à défaut de pouvoir s'en assurer, je préférerais le conserver.

#4

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

écrivait:

La demande #1630 a été mise à jour par Frédéric Péters.

Mais ce code est peut-être encore utile face à d'anciens formdefs, à défaut de pouvoir s'en assurer, je préférerais le conserver.

Non ce n'est pas possible, "values" n'est pas extrait d'un formdef ou
d'un formdata il est créé à la volée dans la méthode _parse() et ne
contient que les clés "type" et "value"; lis le code si tu veux t'en
assurer [1].

De plus on parle du code de la méthode _parse() d'un widget je ne vois
pas ce que ça a avoir avec le fonctionnement d'un vieux formdef; je ne
vois pas dans quel cas d'utilisation on passerait dans ce code à part la
soumission d'une nouvelle valeur pour le champ "prefill".

[1]: pour t'éviter de le faire:

    def _parse(self, request):
        values = {}
        for name in ('type', 'value'):
            value = self.get(name)
            if value:
                values[name] = value
        self.value = values or None
        if values and values['type'] == 'formula' and values.get('value'):
            try:
                compile(values.get('value', ''), '<string>', 'eval')
            except (SyntaxError, TypeError), e:
                self.set_error(_('invalid expression: %s') % e)

#5

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

  • Version cible mis à Au-quotidien 2014.5
#6

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

  • Statut changé de Nouveau à En cours

Benjamin, tu pourrais en faire un patch à la mode "git format-patch" ?"

#8

Mis à jour par Frédéric Péters il y a environ 10 ans

  • Statut changé de En cours à Résolu (à déployer)

Je viens de pousser ces deux patchs (mieux vaut tard que jamais…).

#9

Mis à jour par Thomas Noël il y a environ 10 ans

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

Mis à jour par Thomas Noël il y a presque 10 ans

  • Statut changé de Solution déployée à Fermé
#11

Mis à jour par Benjamin Dauvergne il y a environ 9 ans

#12

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

  • Version cible Au-quotidien 2014.5 supprimé

Formats disponibles : Atom PDF