Projet

Général

Profil

Development #76103

possibilité de n'autoriser que certaines expressions python

Ajouté par Frédéric Péters il y a environ un an. Mis à jour il y a environ un an.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
01 avril 2023
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Non
Planning:
Non

Description

Dans la route sur la dépréciation générale de python on peut bloquer sur quelques expressions, ça pourrait être utile de pouvoir interdire le python sauf ces quelques expressions.

Ça serait la combinaison forbid-python-expressions=true, disable-python-expressions=false, et la liste des expressions pourrait juste être un fichier texte dans le répertoire du tenant, une ligne par expression.

Révisions associées

Révision 8613d9d7 (diff)
Ajouté par Frédéric Péters il y a environ un an

backoffice: do not include python test tools if python is forbidden (#76103)

Révision 2abebbf4 (diff)
Ajouté par Frédéric Péters il y a environ un an

misc: add support for allowing some python expressions (#76103)

Historique

#1

Mis à jour par Robot Gitea il y a environ un an

  • Statut changé de Nouveau à En cours

Frédéric Péters (fpeters) a ouvert une pull request sur Gitea concernant cette demande :

#2

Mis à jour par Robot Gitea il y a environ un an

  • Statut changé de En cours à Solution proposée
#3

Mis à jour par Benjamin Dauvergne il y a environ un an

Je me disais que ce serait peut-être plus simple et plus transparent vis à vis des auditeurs mais aussi un chemin de progression pour les clients de simplement refuser toute nouvelle expression python en levant une erreur de validation systématiquement avec un patch un peu comme ça:

diff --git a/wcs/conditions.py b/wcs/conditions.py
index 3c766fdf0..87669ce13 100644
--- a/wcs/conditions.py
+++ b/wcs/conditions.py
@@ -82,6 +82,8 @@ class Condition:
         return getattr(self, 'validate_' + self.type)()

     def validate_python(self):
+        if get_publisher().has_site_option('forbid-python-expressions'):
+            raise ValidationError(_('use of python is forbidden'))
         if '{{' in self.value:
             raise ValidationError(_('invalid usage, Python condition cannot contain {{'))
         try:
diff --git a/wcs/fields.py b/wcs/fields.py
index 408167854..51e749f8b 100644
--- a/wcs/fields.py
+++ b/wcs/fields.py
@@ -243,6 +243,9 @@ class PrefillSelectionWidget(CompositeWidget):
                 values['value'] = value
         self.value = values or None
         if values and values['type'] == 'formula' and values.get('value'):
+            if get_publisher().has_site_option('forbid-python-expressions'):
+                self.set_error(_('use of python is forbidden'))
+                return
             try:
                 compile(values.get('value', ''), '<string>', 'eval')
             except (SyntaxError, TypeError) as e:
diff --git a/wcs/qommon/form.py b/wcs/qommon/form.py
index b6f8a4168..fda6d4d3b 100644
--- a/wcs/qommon/form.py
+++ b/wcs/qommon/form.py
@@ -3500,6 +3500,8 @@ class ComputedExpressionWidget(CompositeWidget):

         expression = WorkflowStatusItem.get_expression(expression, allow_python=allow_python)
         if expression['type'] == 'python':
+            if get_publisher().has_site_option('forbid-python-expressions'):
+                raise ValidationError(_('use of python is forbidden'))
             if '{{' in expression['value']:
                 raise ValidationError(_('invalid usage, Python expression cannot contain {{'))
             try:

PS: et en y réfléchissant un poil plus, pour permettre la validation d'un formulaire avec des valeurs existantes, ne pas lever d'erreur si la valeur n'a pas été modifiée.

#4

Mis à jour par Frédéric Péters il y a environ un an

Il y a déjà #72091 pour ne pas permettre l'ajout d'expressions python dans de nouveaux endroits, je préfère rester ici au minimum.

#5

Mis à jour par Robot Gitea il y a environ un an

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

Lauréline Guérin (lguerin) a approuvé une pull request sur Gitea concernant cette demande :

#6

Mis à jour par Robot Gitea il y a environ un an

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

Frédéric Péters (fpeters) a mergé une pull request sur Gitea concernant cette demande :

#7

Mis à jour par Transition automatique il y a environ un an

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

Mis à jour par Transition automatique il y a 11 mois

Automatic expiration

Formats disponibles : Atom PDF