Project

General

Profile

Development #1627

Faciliter le prototypage en permettant d'ajouter des variables de subsitutions et des méthodes de prémplissage depuis l'admin

Added by Benjamin Dauvergne about 8 years ago. Updated over 6 years ago.

Status:
Nouveau
Priority:
Normal
Assignee:
-
Target version:
-
Start date:
06 Sep 2012
Due date:
% Done:

0%

Estimated time:
Patch proposed:
Planning:

Description

L'idée est d'avoir une zone de texte dans les paramètres permettant de fournir le code source d'un module python. Le code est exécuté une seule fois dans un environnement vide qui est ensuite mis en cache dans le publisher. Cet environnement est ajouté aux variable de substitutions proposées par le publisher.

La syntaxe du code est validée au remplissage dans l'admin, et son exécution est encadrée par un try/except pour récupérer les éventuelles exceptions et par un signal d'alarme pour éviter les temps d'exécution trop long. En cas d'échec de l'exécution de nouveaux essais sont entrepris avec un temps d'attente qui augmente exponentiellement. Ce n'est pas fait pour protéger w.c.s. d'un code malicieux, i.e. ce n'est pas une sandbox, mais uniquement des erreurs humaines.


Files

configurable_python_env.patch (6.42 KB) configurable_python_env.patch Benjamin Dauvergne, 06 Sep 2012 11:20 PM

History

#1

Updated by Frédéric Péters about 8 years ago

Vraiment, mais alors là vraiment, pas enthousiasmé à l'idée.

Comme proposition alternative je te dirais de plutôt faisre un module pour extra/, qui appellera register_extra_source(). Et si ton soucis est de ne pas avoir à redémarrer wcs, ajoute (quand le mode debug est activé) une vérification de leur timestamp, et un reload, pour les modules chargés depuis extra/.

#2

Updated by Benjamin Dauvergne about 8 years ago

Es-tu effrayé qu'on se mette à tout faire avec ça ou est-ce qu'il y a un autre type d'objection ?

Parce qu'actuellement on (lire Victor) peut déjà faire tout ça dans le champ pré-remplissage ou condition, mais c'est juste illisible.

#3

Updated by Frédéric Péters about 8 years ago

Il y a déjà une palanquée d'options, évidemment chaque fois ajoutées avec une bonne raison, mais le résultat est qu'aujourd'hui je préférerais voir réduire leur nombre. Donc une option qui ne sera jamais utilisée que par moins de cinq personnes, je préfère éviter.

#4

Updated by Benjamin Dauvergne about 8 years ago

Actuellement je ne vois que deux méthodes possibles pour implémenter un pré-remplissage ou une condition complexe:
- sans abstraction, on écrit directement dans le champ pré-remplissage une très longue expression python, qu'on devra recopier en partie dans les autres champs s'il y a du code commun; c'est rapide, un peu complexe mais à la porté de Victor surtout si c'est juste pour un ajustement; c'est difficilement maintenable, il faut parcourir tous les champs pour voir qui fait quoi, etc...
- avec abstraction en implémentant une extension à w.c.s. qui enregistre une nouvelle source de variable de substitution qui peut fournir directement les valeurs ou les fonctions qu'on utilisera dans les champs pré-remplissage et/ou condition. Ça demande l'intervention d'un tech, déploiement, ça fragilise tous les sites parce que c'est chargé partout; et au fur et à mesure ça va devenir ingérable.

Là j'en ajoute une à mi-chemin entre les deux qui permet d'abstraire un peu, qui reste accessible à Victor pour gérer les ajustements (changer une constante dans un code calcul de prix par exemple) et qui est un tant soi peu maintenable parce que dans les champs de pré-remplissage il y a des expressions simples d'une variable ou d'un appel à une fonction qui sont définis en un seul endroit.

#5

Updated by Thomas Noël about 8 years ago

  • Target version set to Au-quotidien 2014.5
#6

Updated by Thomas Noël over 6 years ago

  • Target version deleted (Au-quotidien 2014.5)

Also available in: Atom PDF