[PYTHON] Stocker du code dans une base de données

Stocker du code dans une base de données [PYTHON] - Python - Programmation

Marsh Posté le 17-01-2019 à 09:26:43    

Bonjour,
Dans le cadre d'un projet professionnel, je développe un site web complet dans le cadre d'une application de santé. Je précise que je suis nouveau, n'ayant jamais rien fait de tel avant. Pour ceci, j'utilise en backend Django et Django rest framework (python), en front end, React (JS). Dans un soucis de modularité et de simplicité, j'aimerais pouvoir stocker des fonctions pythons (du code rentré sur le site en partie admin) dans la base de données, ce code serait des fonctions python. D'autant que je trouve que les modèles Django sont puissant.
Le but serait ensuite de pouvoir appeler facilement les fonctions sur le site (le but serait de traiter des données avec ces fonctions).
 
Je me pose donc les questions suivantes, car après quelques recherches sur le web, je n'ai rien trouvé de concluant à ce sujet :
- Est ce une vision viable (une pratique viable) ? Surtout au niveau de la sécurité ? Car dans le cadre de ce genre d'application, il ne faudrait pas de faille.
- Est possible en terme de code ? Récupérer un objet stocké de type JSON et le transformer en code exécutable niveau serveur.
 
Merci d'avance de votre aide !
MrVhek


Message édité par MrVhek le 17-01-2019 à 10:14:16
Reply

Marsh Posté le 17-01-2019 à 09:26:43   

Reply

Marsh Posté le 17-01-2019 à 22:01:45    

Bonjour,
 
Je ne comprends pas bien l’intérêt de stocker du code. Que veux-tu faire avec ? Tu veux pouvoir l’éditer depuis une interface web ?  
 
Pourquoi pas implémenter les fonctions dans ton backends django ?  
 

Reply

Marsh Posté le 18-01-2019 à 09:04:02    

Oui en effet, l’intérêt serait de pouvoir l'éditer directement depuis l'interface admin de Django, ce qui évite ensuite de faire toutes les dépendances. J'y voyait surtout de l'intérêt pour mes collègues qui ne sont pas dans l'informatique. Pour eux, avoir une interface web ou tout est bien indiqué serait plus simple que s'il doivent un jour ajouter ça manuellement dans le code python.
Par contre je viens de penser à un inconvénient majeur, ça va être très dur de tester le code de cette manière...

Reply

Marsh Posté le 18-01-2019 à 09:21:22    

Stocker du code exécutable dans une BD et le rendre modifiable me paraît extrêmement dangereux, a fortiori pour une appli médicale. As-tu entendu parler de la RGPD et de tout ce qui touche aux données personnelles. Celles relatives au médical sont classées dans la catégorie "sensible". Si tu as une fuite de données, tu vas prendre très cher :o
 
Pourquoi ne pas coder les fonctions classiquement et faire une IHM web permettant de les exploiter. S'il y a des paramètres, l'IHM permettra leur saisie (ex : extraction de données filtrées via un moteur de recherche multicritères).


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 18-01-2019 à 09:37:55    

C'est quoi comme fonction ? Est-ce pour faire de l'analyse ?  
J'ai du mal à voir l'intérêt fonctionnel de proposer à des non informaticiens la possibilité d'éditer du code ...  
 
Alors à coté de ça, il y a bien entendu plein d'inconvénient et surtout une charge supplémentaire non négligeable de développement (et de sécurité).

Reply

Marsh Posté le 18-01-2019 à 14:02:19    

En effet, je n'avais pas pensé à cette option, l'idée me parait très bonne.  
Je pense plutot partir sur une option de ce genre alors, en rendant disponibles des fonctions du backend dans l'IHM.
 
C'est des fonctions de traitements de données brutes dans le but de faire des indicateurs, je me disais que ce serait surement plus simple de leur faire une interface web permettant de les modifier à souhait au lieu de passer par la case "besoin de se connecter au serveur en ssh" et de devoir aller bidouiller dans la structure du serveur et le backend.
Merci pour vos réponses !


Message édité par MrVhek le 18-01-2019 à 14:03:23
Reply

Marsh Posté le 18-01-2019 à 14:30:03    

Si tu veux, tu peux t'inspirer de ce que j'ai fait dans mon outil Astres (cf ma signature : des requêtes personnalisées. En gros, ce sont des fonctions développées spécifiquement pour 1 ou plusieurs personnes (identifiées par leur ID de compte). Ces fonctions sont dans un fichier bien identifié et les fonctions admettent des paramètres définis. Dans mon cas, elles n'ont pas d'IHM : les paramètres ne peuvent donc être saisis par l'utilisateur et ne sont donc pas dynamiques sauf s'ils dépendent du contexte applicatif au moment de leur exécution (par ex : extraites les données ayant moins d'1 an -> c'est dynamique car je calcule la date à partir de la date courante au moment de l'exécution).
 
L'utilisateur voit ses requêtes personnalisées dans une liste déroulante : il sélectionne la requête à exécuter et obtient en résultat soit un tableau triable, soit un fichier CSV téléchargeable. Dans certains cas, le résultat peut être un fichier XML, HTML, PDF ou CSV envoyé par mail à une mailing-list définie (ex : envoyé par mail un export hebdo).


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 21-01-2019 à 07:51:14    

D'accord merci, je vais regarder ça !

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed