2017-07-26 3 views
0

Je cherche un moyen de permettre aux utilisateurs finaux de traiter certaines données de l'interface utilisateur. Un moteur de script avec une syntaxe similaire à Excel ferait l'affaire.Excel comme langage de script en Python pour les utilisateurs finaux

Exemple:

L'entrée serait un dict qui contient les données (qui est essentiellement nom de variable pour le script) et un string à la règle.

input = {'a':1, 'b':2, 'c':'add'}

rule_example_1 = "if(c == 'add',a+b,if(c=='sub',a-b,raise ERROR))"'

rule_example_2 = "if c == 'add' return a+b else if c == 'sub' return a-b else raise error()"

Le script doit être extensible avec ses propres fonctions. Aussi peut-être une certaine définition des types qui peuvent être utilisés par les utilisateurs.

utilisation:

Fondamentalement, les utilisateurs ont des données 2 dimensions dans leur compte (si les détails du produit). Et en utilisant certaines règles de script je voudrais les laisser changer les données du produit.

Par exemple, si un utilisateur veut exclure tous les produits commençant par la lettre X, ils créeraient une règle:

set('product_status', if(starts_with(product_title,'X'), 'skip', ''))

ou si l'utilisateur veut augmenter le prix de 20% si le prix du produit est inférieure alors 10:

set('product_price', if(product_price < 10, product_price*1.20, product_price)

+3

... Peut-être que Python? –

+0

@ddofborg: Pouvez-vous fournir des contraintes? Fondamentalement: pourquoi * pas * laisser vos utilisateurs finaux écrire du code Python? –

+0

Peut-être que certains détails supplémentaires sur la nature de l'application, sur ce que les scripts sont censés faire et sur le type d'utilisation que les utilisateurs vont en faire devraient nous donner une meilleure idée de la meilleure façon de vous aider. –

Répondre

1

Si vous voulez quelque chose de plus convivial, vous pouvez peut-être essayer Blockley: https://developers.google.com/blockly/

Vous pouvez facilement l'intégrer à votre application et la personnaliser en créant vos propres blocs pour répondre aux besoins de vos utilisateurs.

Vous pouvez également jeter un oeil à Mesh: https://github.com/chrispsn/mesh

Ou peut-être quelque chose de plus simple: https://pypi.python.org/pypi/simpleeval

Ou, encore plus simple (mais moins sûr), vous pouvez utiliser ast.literal_eval(); celui-ci fait partie de la bibliothèque standard de Python: https://docs.python.org/3/library/ast.html#ast.literal_eval

également cette autre question peut vous aider: Safe expression parser in Python

+1

Je pense que SimpleEval (https://github.com/danthedeckie/simpleeval) fera le travail! – ddofborg