]> git.immae.eu Git - perso/Denise/oms.git/commitdiff
nettoyage du code + passage en "défaut" de la grille améliorée (améliorée). Correctio...
authorDenise sur Lya <sekhmet@lya>
Tue, 16 Feb 2021 13:24:18 +0000 (14:24 +0100)
committerDenise sur Lya <sekhmet@lya>
Tue, 16 Feb 2021 13:24:18 +0000 (14:24 +0100)
app.py
configuration.py
data/changelog_data.txt
gestionOMS.py
gestion_couleurs.py
gestion_donnees.py
gestion_erreurs.py
gestion_unites.py
templates/index.html
trace_courbe.py

diff --git a/app.py b/app.py
index 3f4da5c574350378d249a8bf71f56e40979be120..02d88c4d6d43f4d97a228e0bc9d2b6a606f3ca39 100644 (file)
--- a/app.py
+++ b/app.py
@@ -8,11 +8,10 @@ import base64
 from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas
 
 from configuration import config_init,CONFIG
 from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas
 
 from configuration import config_init,CONFIG
-from gestion_erreurs import *
-from gestion_donnees import *
-from gestion_unites import *
-from trace_courbe import *
-from faq import *
+from gestion_erreurs import initialise_erreurs, debug, niveau_debug
+import gestion_donnees as donnees
+from trace_courbe import cree_figure
+import faq as f
 
 
 app = flask.Flask(__name__)
 
 
 app = flask.Flask(__name__)
@@ -26,7 +25,7 @@ def index():
             ## charger les donneés dans le formulaire
             fichier = flask.request.files['fichier_donnees']
             chaine = fichier.read()
             ## charger les donneés dans le formulaire
             fichier = flask.request.files['fichier_donnees']
             chaine = fichier.read()
-            val_form2 = fichier_json_vers_configdonnees(chaine,liste_err)
+            val_form2 = donnees.fichier_json_vers_configdonnees(chaine,liste_err)
             if val_form2 == {}:
                 return flask.render_template("index.html",err=liste_err[2]+liste_err[1]+liste_err[0],valform=val_form)
             val_form.update(val_form2)
             if val_form2 == {}:
                 return flask.render_template("index.html",err=liste_err[2]+liste_err[1]+liste_err[0],valform=val_form)
             val_form.update(val_form2)
@@ -45,15 +44,15 @@ def courbe_image(ext):
     data = flask.request.form
     
     # récupérer les données du formulaire proprement
     data = flask.request.form
     
     # récupérer les données du formulaire proprement
-    config,listes_jours,listes_donnees = web_vers_python(data,liste_err)
+    config,listes_jours,listes_donnees = donnees.web_vers_python(data,liste_err)
     debug(" * On a récupéré et traité les données du formulaire web",liste_err)
 
     debug(" * On a récupéré et traité les données du formulaire web",liste_err)
 
-    texte = donnees_vers_json(listes_jours["poids"],listes_donnees["poids"],listes_jours["taille"],listes_donnees["taille"], config)
+    texte = donnees.donnees_vers_json(listes_jours["poids"],listes_donnees["poids"],listes_jours["taille"],listes_donnees["taille"], config)
     
     debug("texte prêt à être exporté : "+texte,liste_err)
     
     # noter le nom de l'enfant pour l'export
     
     debug("texte prêt à être exporté : "+texte,liste_err)
     
     # noter le nom de l'enfant pour l'export
-    nomenfant = simplifie_nom(config['nom'])
+    nomenfant = donnees.simplifie_nom(config['nom'])
 
     # créer les figures
     try:
 
     # créer les figures
     try:
@@ -105,15 +104,15 @@ def contact():
 @app.route("/faq")
 def faq():
     
 @app.route("/faq")
 def faq():
     
-    table_faq = lire_fichier_csv_simple(fichier_FAQ)
-    l_categ,table_qr = extraire_tables_par_cat(table_faq)
+    table_faq = f.lire_fichier_csv_simple(f.fichier_FAQ)
+    l_categ,table_qr = f.extraire_tables_par_cat(table_faq)
 
     return flask.render_template("faq.html",lcateg=l_categ,tableqr=table_qr,err=[])
 
 @app.route("/changelog")
 def changelog():
     
 
     return flask.render_template("faq.html",lcateg=l_categ,tableqr=table_qr,err=[])
 
 @app.route("/changelog")
 def changelog():
     
-    table_version = lire_fichier_csv_simple(fichier_changelog)
+    table_version = f.lire_fichier_csv_simple(f.fichier_changelog)
     
     return flask.render_template("changelog.html",table = table_version,err=[])
 
     
     return flask.render_template("changelog.html",table = table_version,err=[])
 
index 242f179bafedaa25daea28a1e51df3eaa062bc3f..fd6df9e3d034985601d3d3d5bc9da1b19ee48313 100644 (file)
@@ -113,6 +113,7 @@ DEFAUT["tracevide"] = ""
 DEFAUT["memechelle"] = ""
 DEFAUT["positionlegende"] = "hg"
 DEFAUT["prolongercourbes"] = ""
 DEFAUT["memechelle"] = ""
 DEFAUT["positionlegende"] = "hg"
 DEFAUT["prolongercourbes"] = ""
+DEFAUT["grilleamelio"] = "oui"
 
 
 DEFAUT["prematurite"] = "0j"
 
 
 DEFAUT["prematurite"] = "0j"
index f59e7b7561c3d143398689c9e4391624305b540e..f0b26b0dea04e6e0e2847f769b006bed2d57dfc5 100644 (file)
@@ -1,3 +1,5 @@
+"Version 2.261","16/02/2021","<p>Du mieux sur la gestion de la grille améliorée, qui passe en ""par défaut"" maintenant. Plus une correction de bug sur l'échelle du graphique, et du code nettoyé. On dirait pas comme ça, hein ? N'hésitez pas à me signaler tout vilain bug persistant !</p>"
+
 "Version 2.26","15/02/2021","<p>Nouveauté en bêta-test : grille améliorée. Pour le moment on peut cocher pour avoir cette fonctionnalité.</p>"
 
 "Version 2.25","12/02/2021","<p>Nouveauté : possibilité de ""prolonger"" la courbe de poids/taille en pointillés. L'extrapolation est faite à partir de la dernière donnée. À tester encore !</p>"
 "Version 2.26","15/02/2021","<p>Nouveauté en bêta-test : grille améliorée. Pour le moment on peut cocher pour avoir cette fonctionnalité.</p>"
 
 "Version 2.25","12/02/2021","<p>Nouveauté : possibilité de ""prolonger"" la courbe de poids/taille en pointillés. L'extrapolation est faite à partir de la dernière donnée. À tester encore !</p>"
index cebd1eb7a05380479c638cc86a5ab0665580a043..b00b93b95aaa7f3bd29992db9c3c381cee9f4e27 100644 (file)
@@ -5,8 +5,8 @@ Created on Mon May 18 08:59:11 2020
 
 @author: sekhmet
 """
 
 @author: sekhmet
 """
-from gestion_erreurs import *
-from gestion_couleurs import *
+#from gestion_erreurs import erreur, warning, debug
+from gestion_couleurs import degrade_choix
 
 import csv
 
 
 import csv
 
index c1b369050132e6285b3374e1e4bde09ffdb7bfca..3230f3da3f5ba7301d731891988f777732128598 100644 (file)
@@ -4,7 +4,7 @@
 
 ### Gérer les couleurs
 
 
 ### Gérer les couleurs
 
-from gestion_erreurs import *
+from gestion_erreurs import warning
 
 def rgb_vers_tuple(chaine,defaut,liste_err):
     """ convertit une chaine rgb genre #00FF1B
 
 def rgb_vers_tuple(chaine,defaut,liste_err):
     """ convertit une chaine rgb genre #00FF1B
index 208be4af0c07df63f30e9bdc21aa47333a014f7d..169f3daa777b7379e8bcbea1e5dbeba10e4b451c 100644 (file)
@@ -2,9 +2,9 @@
 # -*- coding: utf-8 -*-
 
 from configuration import CONFIG,DEFAUT
 # -*- coding: utf-8 -*-
 
 from configuration import CONFIG,DEFAUT
-from gestion_erreurs import *
-from gestion_couleurs import *
-from gestion_unites import *
+from gestion_erreurs import debug, warning, erreur, initialise_erreurs
+from gestion_couleurs import rgb_vers_tuple, tuple_vers_rgb
+from gestion_unites import choix_unite
 import datetime
 import json
 import unidecode
 import datetime
 import json
 import unidecode
@@ -73,6 +73,7 @@ def convertit_age_vers_texte(nombre):
     if jours>0 or  nombre ==0: # si c'est la naissance, faut beien écrire 0j quand même
         chaine += str(jours)+"j"
     return chaine
     if jours>0 or  nombre ==0: # si c'est la naissance, faut beien écrire 0j quand même
         chaine += str(jours)+"j"
     return chaine
+
 ##########################
     
 # fonction qui calcule "auto" le maxi du graphique en fonction du max
 ##########################
     
 # fonction qui calcule "auto" le maxi du graphique en fonction du max
@@ -150,7 +151,7 @@ def delta_date(date1,datenaissance):
     d = date1 - datenaissance
     jours = d.days
     if jours<0:
     d = date1 - datenaissance
     jours = d.days
     if jours<0:
-        erreur_continue("La différence entre les dates est négative... :/")
+        warning("La différence entre les dates est négative... :/")
         return -1
     return jours
 
         return -1
     return jours
 
@@ -179,7 +180,7 @@ def web_vers_python(data,liste_err):
 
 
 
 
 
 
-########### Fonctions qui gèretn les données
+########### Fonctions qui gèretn les données web vers python
 
 def gere_checkbox(chaine):
     """ prend en arg une chaine, et renvoie "oui" si c'est "on" (sortie de la checkbox)
 
 def gere_checkbox(chaine):
     """ prend en arg une chaine, et renvoie "oui" si c'est "on" (sortie de la checkbox)
@@ -193,6 +194,7 @@ def gere_configuration(data,liste_err):
     """ prend en argument le dictionnaire de requête (configuration imparfaite), et
     construit le dictionnaire de configuration qui va bien.
     Vérifie que chaque entrée est cohérente évidemment."""
     """ prend en argument le dictionnaire de requête (configuration imparfaite), et
     construit le dictionnaire de configuration qui va bien.
     Vérifie que chaque entrée est cohérente évidemment."""
+    # Initialisation
     configuration = {"non_sauve": {}}
     
     # Pour le nom, osef qu'il soit vide
     configuration = {"non_sauve": {}}
     
     # Pour le nom, osef qu'il soit vide
@@ -292,6 +294,7 @@ def gere_configuration(data,liste_err):
 
     configuration["prolongercourbes"] = gere_checkbox(data.get("prolongercourbes",""))
 
 
     configuration["prolongercourbes"] = gere_checkbox(data.get("prolongercourbes",""))
 
+    # Ceci n'a pas besoin d'être sauvé
     configuration["non_sauve"]["grilleamelio"] = gere_checkbox(data.get("grilleamelio",""))
     
     configuration["couleurs"] = {}
     configuration["non_sauve"]["grilleamelio"] = gere_checkbox(data.get("grilleamelio",""))
     
     configuration["couleurs"] = {}
@@ -303,7 +306,7 @@ def gere_configuration(data,liste_err):
     
     return configuration   
  
     
     return configuration   
  
-
+## web vers python : données
 def gere_donnees(data,naissance,typedonnee,liste_err):
     """ prend en argument le dictionnaire de requête, et la date de
     naissance (éventuellement vide), et construit deux listes :
 def gere_donnees(data,naissance,typedonnee,liste_err):
     """ prend en argument le dictionnaire de requête, et la date de
     naissance (éventuellement vide), et construit deux listes :
@@ -347,6 +350,7 @@ def gere_donnees(data,naissance,typedonnee,liste_err):
     return (l_jours,l_donnee)    
 
 
     return (l_jours,l_donnee)    
 
 
+# python vers Json
 #### export vers json
 
 def donnees_vers_json(l_jours,l_poids,l_jourst,l_taille,config):
 #### export vers json
 
 def donnees_vers_json(l_jours,l_poids,l_jourst,l_taille,config):
@@ -378,7 +382,7 @@ def fusionne_donnees(listes_jours,listes_donnees):
     de données (par la même clé de type de données). Il faut les fusionner pour avoir une liste de dictionnaires, de type
     ("age":truc, "donnee1":truc, "donnee2":truc, ...) triée par ordre de jours. Si jamais une des données est vide,
     le champ du dictionnaire n'est pas rempli"""
     de données (par la même clé de type de données). Il faut les fusionner pour avoir une liste de dictionnaires, de type
     ("age":truc, "donnee1":truc, "donnee2":truc, ...) triée par ordre de jours. Si jamais une des données est vide,
     le champ du dictionnaire n'est pas rempli"""
-#    nb_donnees = len(listes_jours)
+
     def fini(lj):
         """ teste si les listes sont toutes vides """
         for l in lj.values():
     def fini(lj):
         """ teste si les listes sont toutes vides """
         for l in lj.values():
@@ -411,10 +415,11 @@ def fusionne_donnees(listes_jours,listes_donnees):
     return liste_f
     
 
     return liste_f
     
 
-
+### COnversion json vers formulaire
 # Json -> formulaire HTML
 def fichier_json_vers_configdonnees(chaine,liste_err):
 # Json -> formulaire HTML
 def fichier_json_vers_configdonnees(chaine,liste_err):
-    """ prend le json importé (chaine) et l'exporte vers les valeurs du formulaire """
+    """ prend le json importé (chaine) et l'exporte vers les valeurs du formulaire 
+    Renvoyé sous forme de dictionnaire (mais adapté au formulaire web)"""
     debug("json vers config : Prêt à interpréter le json",liste_err)
     try:    
         valform = json.loads(chaine)
     debug("json vers config : Prêt à interpréter le json",liste_err)
     try:    
         valform = json.loads(chaine)
index 7fffb0661a8896fc8279a77c9f36aba15f7c85ea..910aabd57fc8d58038db5e3415a572b34d6845ef 100644 (file)
@@ -23,9 +23,9 @@ def warning(message,listeerreurs):
     print("** Warning : "+message)
     listeerreurs[1].append("Alerte : "+message)
     
     print("** Warning : "+message)
     listeerreurs[1].append("Alerte : "+message)
     
-def debug(message,liste_erreurs):
+def debug(message,listeerreurs):
     global niveau_debug
     if niveau_debug:
         print("##Debug : "+message)
     global niveau_debug
     if niveau_debug:
         print("##Debug : "+message)
-        liste_erreurs[2].append("# Debug : "+message)
+        listeerreurs[2].append("# Debug : "+message)
               
               
index b97d90b58ed6cfcfd44b77c8a854ab16d6a5d195..d4089bd9c0e0dbafad3ea67820730094845505df 100644 (file)
@@ -2,7 +2,7 @@
 # -*- coding: utf-8 -*-
 
 from configuration import CONFIG
 # -*- coding: utf-8 -*-
 
 from configuration import CONFIG
-from gestion_erreurs import 
+from gestion_erreurs import warning
 
 ##################### outils pour affichage et choix de l'unité
 
 
 ##################### outils pour affichage et choix de l'unité
 
@@ -31,7 +31,7 @@ def choix_echelle_data(typedonnees, donneemax):
         if donneemax>15:
             return (5,1)
         elif donneemax > 10:
         if donneemax>15:
             return (5,1)
         elif donneemax > 10:
-            return (2,1)
+            return (1,0.5)
         else:
             return (1,0.2)
     if typedonnees == "taille":
         else:
             return (1,0.2)
     if typedonnees == "taille":
@@ -53,25 +53,25 @@ def choix_echelle_temps(unite, tempsmaxi):
     if unite=="jours":
         if tempsmaxi > 60:  # pourquoi mettre en jours ?
             return (30,1)
     if unite=="jours":
         if tempsmaxi > 60:  # pourquoi mettre en jours ?
             return (30,1)
-        elif tempsmaxi >20:
+        elif tempsmaxi >15:
             return (7,1)
         else:
             return (1,0)
     if unite=="semaines":
         if tempsmaxi >50:
             return (5,1)
             return (7,1)
         else:
             return (1,0)
     if unite=="semaines":
         if tempsmaxi >50:
             return (5,1)
-        elif tempsmaxi > 15:
+        elif tempsmaxi > 10:
             return (2,1)
         else:
             return (1,1/7) # On met en jours
     
     if unite=="mois":
             return (2,1)
         else:
             return (1,1/7) # On met en jours
     
     if unite=="mois":
-        if tempsmaxi > 30:
-            return (2,1)
+        if tempsmaxi > 24:
+            return (12,1)
         elif tempsmaxi > 10:
             return (1,0)
         else:
         elif tempsmaxi > 10:
             return (1,0)
         else:
-            return (1,0.25) # on met en semaines
+            return (1,0.25) # on met en semaines à peu près (quart de mois)
         
     if unite=="années":
         return (1,1/12) # années / mois
         
     if unite=="années":
         return (1,1/12) # années / mois
index e5d4d24833ffc390d0bbfb2fc14b689445c57305..34be454a1f7532c1086c86378d5b673326f2b4d1 100644 (file)
@@ -96,7 +96,7 @@
        <li>Prolonger les courbes (expérimental) : <input type="checkbox" name="prolongercourbes" {% if valform.prolongercourbes == "oui" %} checked{% endif%}></li>
        
        <li><label>Même échelle sur tous les graphiques&nbsp;: </label><input type="checkbox" name="memechelle" {% if valform.memechelle == 'oui' %} checked{% endif %}></li>
        <li>Prolonger les courbes (expérimental) : <input type="checkbox" name="prolongercourbes" {% if valform.prolongercourbes == "oui" %} checked{% endif%}></li>
        
        <li><label>Même échelle sur tous les graphiques&nbsp;: </label><input type="checkbox" name="memechelle" {% if valform.memechelle == 'oui' %} checked{% endif %}></li>
-       <li><label>Grille améliorée (bêta)&nbsp;:</label><input type="checkbox" name="grilleamelio"></li>
+       <li><label>Grille améliorée (bêta)&nbsp;:</label><input type="checkbox" name="grilleamelio" {% if valform.grilleamelio == 'oui' %} checked{% endif %}></li>
        <li>Dimensions du graphique&nbsp;: <label>largeur&nbsp;: </label><input type="text" name="largeur" value="{{ valform.largeur }}"> 
        <label>hauteur&nbsp;: </label><input type="text" name="hauteur" value="{{ valform.hauteur }}"></li>
        <li><label>Légende&nbsp;: <input type="checkbox" name="legende" {% if valform.legende == 'oui' %} checked{% endif %}> </label>
        <li>Dimensions du graphique&nbsp;: <label>largeur&nbsp;: </label><input type="text" name="largeur" value="{{ valform.largeur }}"> 
        <label>hauteur&nbsp;: </label><input type="text" name="hauteur" value="{{ valform.hauteur }}"></li>
        <li><label>Légende&nbsp;: <input type="checkbox" name="legende" {% if valform.legende == 'oui' %} checked{% endif %}> </label>
index 9cb4845c658c63191caaf39e49546f7ff63704fd..c3e16919477f4a1d39a87f47863f293a57443567 100644 (file)
@@ -1,9 +1,10 @@
 #!/usr/bin/env python3
 # -*- coding: utf-8 -*-
 from configuration import CONFIG
 #!/usr/bin/env python3
 # -*- coding: utf-8 -*-
 from configuration import CONFIG
-from gestionOMS import *
-from gestion_unites import *
+import gestionOMS as oms
+import gestion_unites as u
 from gestion_donnees import calcule_max_graphique, convertit_jours_vers_python
 from gestion_donnees import calcule_max_graphique, convertit_jours_vers_python
+from gestion_erreurs import debug, erreur, warning
 from numpy import arange
 
 import matplotlib.pyplot as plt
 from numpy import arange
 
 import matplotlib.pyplot as plt
@@ -12,18 +13,22 @@ import matplotlib.pyplot as plt
 
 
 def cree_figure(conf,l_jours,l_poids,typedonnee,liste_err):
 
 
 def cree_figure(conf,l_jours,l_poids,typedonnee,liste_err):
-    debug("debut de cree_figure",liste_err)
+    """ conf est le dictionnaire de config. l_jours et l_poids les listes des temps (en jours) et de données
+    (donc pas forcément du poids)
+    typedonnee est le type de données (voir CONFIG["liste_typedonnees"]
+    liste_err la liste des erreurs à compléter (voir gestion_erreurs))
+    Renvoie la figure tracée"""
+    debug("debut de cree_figure. Config : "+str(conf),liste_err)
     try:
     try:
-        liste_data_labels_p,liste_data_labels_z = renvoie_liste_labels(conf,CONFIG["liste_data_choisie_p"],CONFIG["liste_data_choisie_z"],liste_err)
+        liste_data_labels_p,liste_data_labels_z = oms.renvoie_liste_labels(conf,CONFIG["liste_data_choisie_p"],CONFIG["liste_data_choisie_z"],liste_err)
     except:
         erreur("bug avec liste data labels",liste_err)
         return ""
 
     except:
         erreur("bug avec liste data labels",liste_err)
         return ""
 
-    # maxi saisi par l'utilisateur ?
+    ######################## Gestion des bornes #############################
+    # y a-t-il un maxi saisi par l'utilisateur ?
     if conf["maxi"] ==0:
         # Est-ce qu'on a donné un maxi quand même (car même échelle) ?
     if conf["maxi"] ==0:
         # Est-ce qu'on a donné un maxi quand même (car même échelle) ?
-        print(conf)
-        print(conf["non_sauve"])
         if conf["non_sauve"].get("maxi",0) == 0:
             jour_maxi = calcule_max_graphique(l_jours)
         else:
         if conf["non_sauve"].get("maxi",0) == 0:
             jour_maxi = calcule_max_graphique(l_jours)
         else:
@@ -31,42 +36,41 @@ def cree_figure(conf,l_jours,l_poids,typedonnee,liste_err):
     else:
         jour_maxi = conf["maxi"]+1
         
     else:
         jour_maxi = conf["maxi"]+1
         
-
     # On s'assure que c'est bien compris dans les bornes
     jour_maxi = max(CONFIG["jours_mini_courbe"],min(jour_maxi,CONFIG["jours_maxi_courbe"]))
     # On s'assure que c'est bien compris dans les bornes
     jour_maxi = max(CONFIG["jours_mini_courbe"],min(jour_maxi,CONFIG["jours_maxi_courbe"]))
-    debug("cree_figure : gestion du jour max ok : "+str(jour_maxi),liste_err)    
+    debug("cree_figure : gestion du jour max : "+str(jour_maxi),liste_err)    
     
     
+    ##################### Gestion des unités ###############################
     # si l'unité n'est pas précisée, ni en "non sauvé" ni par l'utilisateur
     if conf["unite"] == "" and conf["non_sauve"].get("unite","") == "":
     # si l'unité n'est pas précisée, ni en "non sauvé" ni par l'utilisateur
     if conf["unite"] == "" and conf["non_sauve"].get("unite","") == "":
-        unite = choix_unite(jour_maxi)
+        unite = u.choix_unite(jour_maxi)
         debug("Unité non précisée, on choisit "+unite,liste_err)
     elif conf["unite"] != "":
         unite = conf["unite"]
     else:
         unite = conf["non_sauve"]["unite"]
     
         debug("Unité non précisée, on choisit "+unite,liste_err)
     elif conf["unite"] != "":
         unite = conf["unite"]
     else:
         unite = conf["non_sauve"]["unite"]
     
-    #debug("prématurité dans la config : "+conf["prematurite"],liste_err)
+    ##################### Gestion de la prématurité #######################"
     prema = int(convertit_jours_vers_python(conf["prematurite"],liste_err))
     ## Gestion des prémas, deux cas :
     # Si agecorrige est oui, alors on veut juste soustraire la valeur de préma
     # à toutes les données.
     # Si agecorrige est non, alors on veut ajouter la valeur de préma aux courbes de référence.
     prema = int(convertit_jours_vers_python(conf["prematurite"],liste_err))
     ## Gestion des prémas, deux cas :
     # Si agecorrige est oui, alors on veut juste soustraire la valeur de préma
     # à toutes les données.
     # Si agecorrige est non, alors on veut ajouter la valeur de préma aux courbes de référence.
-
-    debug("Prématurité : "+str(prema)+" age corrigé : "+conf["agecorrige"],liste_err)
-            
+    debug("Prématurité : "+str(prema)+" age corrigé : "+conf["agecorrige"],liste_err)           
     if prema>0 and conf["agecorrige"] == "oui":
         l_jours = [j-prema for j in l_jours]
         jour_maxi = jour_maxi - prema
     if prema>0 and conf["agecorrige"] == "oui":
         l_jours = [j-prema for j in l_jours]
         jour_maxi = jour_maxi - prema
-#        debug("liste des jours : "+str(l_jours),liste_err)
 
 
-    l_jours_conv = convertit_tableau(l_jours,unite,liste_err)
+
+    ###################### Conversion des unités ###########################""
+    l_jours_conv = u.convertit_tableau(l_jours,unite,liste_err)
     # Attention, comme les jours commencent à partir de 0, faut enlever 1 pour avoir la borne...
     # Attention, comme les jours commencent à partir de 0, faut enlever 1 pour avoir la borne...
-    age_maxi = convertitunite(jour_maxi-1,unite,liste_err)
+    age_maxi = u.convertitunite(jour_maxi-1,unite,liste_err)
     
     debug("cree_figure : conversion des unités ok : "+str(l_jours_conv),liste_err)        
 
     
     debug("cree_figure : conversion des unités ok : "+str(l_jours_conv),liste_err)        
 
+    #####################" Courbes OMS  et titre ######################################"
     titre = "Courbe de "+typedonnee+" OMS"
     titre = "Courbe de "+typedonnee+" OMS"
-    
     if conf["typecourbe"] == "P":
         # percentiles
         liste_data_labels = liste_data_labels_p
     if conf["typecourbe"] == "P":
         # percentiles
         liste_data_labels = liste_data_labels_p
@@ -98,7 +102,6 @@ def cree_figure(conf,l_jours,l_poids,typedonnee,liste_err):
     if conf["nom"] !="":
         titre += " de " +conf["nom"]
 
     if conf["nom"] !="":
         titre += " de " +conf["nom"]
 
-    
     if prema>0:
         titre+= ", préma de "+conf["prematurite"]
         if conf["agecorrige"] == "oui":
     if prema>0:
         titre+= ", préma de "+conf["prematurite"]
         if conf["agecorrige"] == "oui":
@@ -106,30 +109,28 @@ def cree_figure(conf,l_jours,l_poids,typedonnee,liste_err):
         else:
             titre+=" (courbe en âge réel, données OMS décalées)"
    
         else:
             titre+=" (courbe en âge réel, données OMS décalées)"
    
-    debug("cree_figure : géré le type de courbe ok. Liste des data labels : "+str(liste_data_labels),liste_err)
+    #debug("cree_figure : géré le type de courbe ok. Liste des data labels : "+str(liste_data_labels),liste_err)
     debug("Fichier d'où extraire les données : "+fichier_oms,liste_err)
     debug("Fichier d'où extraire les données : "+fichier_oms,liste_err)
     
     
-        
-    
-    # convertir les unités
-    #### Partie code OMS
     #### On extrait les données des courbes, et on convertit les jours dans l'unité voulues
     try:
     #### On extrait les données des courbes, et on convertit les jours dans l'unité voulues
     try:
-        t = lire_fichier_csv(fichier_oms)
+        t = oms.lire_fichier_csv(fichier_oms)
     except:
     except:
-        liste_err[0].append("Impossible d'ouvrir le fichier "+fichier_oms)
+        erreur("cree_figure : Impossible d'ouvrir le fichier "+fichier_oms, liste_err)
         return ""
     
         return ""
     
-    debug("cree_figure : on va convertir données OMS à la bonne unité",liste_err)
+    debug("cree_figure : Conversion des données OMS à la bonne unité",liste_err)
     try:
     try:
-        coljour= (extraire_colonne(t,0,jour_maxi))
+        coljour= (oms.extraire_colonne(t,0,jour_maxi))
         if prema>0 and conf["agecorrige"] != "oui":
             coljour = [j + prema for j in coljour]
         if prema>0 and conf["agecorrige"] != "oui":
             coljour = [j + prema for j in coljour]
-        coljour = convertit_tableau(coljour,unite,liste_err)
+        coljour = u.convertit_tableau(coljour,unite,liste_err)
     except:
         erreur("Problème à la conversion du tableau OMS. jour_maxi = "+str(jour_maxi)+" unite = "+unite,liste_err)
         return ""
     
     except:
         erreur("Problème à la conversion du tableau OMS. jour_maxi = "+str(jour_maxi)+" unite = "+unite,liste_err)
         return ""
     
+    ##################### Création de la figure et du graphique ###################
     debug("cree_figure : prête à créer la figure",liste_err)   
     #### La figure, params
     
     debug("cree_figure : prête à créer la figure",liste_err)   
     #### La figure, params
     
@@ -142,36 +143,13 @@ def cree_figure(conf,l_jours,l_poids,typedonnee,liste_err):
     plt.rcParams['legend.edgecolor'] = conf["couleurs"]["grille"]
     ax = plt.axes() 
 
     plt.rcParams['legend.edgecolor'] = conf["couleurs"]["grille"]
     ax = plt.axes() 
 
+    ###################### Tracé des différentes courbes
     #Tracé des courbes OMS
     for (i,label,couleur) in liste_data_labels:
     #Tracé des courbes OMS
     for (i,label,couleur) in liste_data_labels:
-        ax.plot(coljour,extraire_colonne(t,i,jour_maxi),label=label,color=couleur)
-        #warning("colonne"+str(i)+str(label)+str(couleur),liste_err)
+        ax.plot(coljour,oms.extraire_colonne(t,i,jour_maxi),label=label,color=couleur)
 
     debug("cree_figure : tracé des courbes OMS ok",liste_err) 
 
     debug("cree_figure : tracé des courbes OMS ok",liste_err) 
-    
-    
-    ##### Tracé des courbes OMS fini
-    
-    # On extrait la valeur min et la valeur max des poids
-    (colonne_min,_,_) = liste_data_labels[-1]
-    (colonne_max,_,_) = liste_data_labels[0]
-    
-    debug("cree_figure : colonnes min et max : "+str(colonne_min)+" "+str(colonne_max),liste_err)
-    
-    poids_min = min(extraire_colonne(t,colonne_min,jour_maxi))
-    poids_max = max(extraire_colonne(t,colonne_max,jour_maxi))
-    if l_jours != []:
-        poids_min = min(min(l_poids),poids_min)
-        poids_max = max(max(l_poids),poids_max)
-    # On ajuste un peu ces min et max
-    # min : valeur min -1kg
-    poids_min = max(0,poids_min-1)
-    #max : +5% 
-    poids_max = poids_max * 1.05
-       
-    
-    debug("cree_figure : prête à tracer la courbe de l'enfant",liste_err)
-
+        
     ### Tracé pour de bon    
     if l_jours != []:
         ax.plot(l_jours_conv,l_poids,label=conf["nom"],color=conf["couleurs"]["cadretxt"],marker='o')
     ### Tracé pour de bon    
     if l_jours != []:
         ax.plot(l_jours_conv,l_poids,label=conf["nom"],color=conf["couleurs"]["cadretxt"],marker='o')
@@ -186,20 +164,44 @@ def cree_figure(conf,l_jours,l_poids,typedonnee,liste_err):
             dates_extrapole = list(range(date_fin, jour_maxi))
             donnees_extrapole =  prolongecourbe(t, date_fin, l_poids[-1], dates_extrapole, conf["typecourbe"], liste_err)
             #print("données extrapolées !")
             dates_extrapole = list(range(date_fin, jour_maxi))
             donnees_extrapole =  prolongecourbe(t, date_fin, l_poids[-1], dates_extrapole, conf["typecourbe"], liste_err)
             #print("données extrapolées !")
-            dates_extrapole = convertit_tableau(dates_extrapole,unite,liste_err)
+            dates_extrapole = u.convertit_tableau(dates_extrapole,unite,liste_err)
             
             # tracé des données extrapolées
             plt.plot(dates_extrapole, donnees_extrapole,color=conf["couleurs"]["cadretxt"], linestyle=(0, (5,7)), marker=None)
             
             # tracé des données extrapolées
             plt.plot(dates_extrapole, donnees_extrapole,color=conf["couleurs"]["cadretxt"], linestyle=(0, (5,7)), marker=None)
+            debug("Tracé de la courbe extrapolée ok", liste_err)
         
     else:
         debug("On ne trace pas de courbe enfant", liste_err)
 
         
     else:
         debug("On ne trace pas de courbe enfant", liste_err)
 
-    debug("Début de la gestion de l'échelle", liste_err)
+    ###################" Gestion de l'échelle #####################
+    debug("Courbes tracées. Il n'y a plus qu'à gérer l'échelle", liste_err)
     ### échelle à régler
     ### échelle à régler
+
+    # On extrait la valeur min et la valeur max des poids des courbes OMS et des données
+    (colonne_min,_,_) = liste_data_labels[-1]
+    (colonne_max,_,_) = liste_data_labels[0]
     
     
+    # poids max OMS
+    poids_min = min(oms.extraire_colonne(t,colonne_min,jour_maxi))
+    poids_max = max(oms.extraire_colonne(t,colonne_max,jour_maxi))
+    if l_jours != []:
+        poids_min = min(min(l_poids),poids_min)
+        # Pour le poids max, voir la dernière valeur du tableau
+        i = 0
+        while i<len(l_jours) and l_jours[i]<jour_maxi:
+            i=i+1
+        poids_max = max(max(l_poids[0:i+1]),poids_max)
+    # On ajuste un peu ces min et max
+    # min : valeur min -1kg
+    poids_min = max(0,poids_min-1)
+    #max : +5% 
+    poids_max = poids_max * 1.05
+       
+
+    # Grille custom ?
     if conf["non_sauve"]["grilleamelio"] == "oui":
     if conf["non_sauve"]["grilleamelio"] == "oui":
-    
-        pas=choix_echelle_data(typedonnee, poids_max)
+        debug("On a choisi la grille plus jolie", liste_err)
+        pas=u.choix_echelle_data(typedonnee, poids_max)
         # data_min_arrondie
         minechelle = int(poids_min/pas[0])*pas[0]
     
         # data_min_arrondie
         minechelle = int(poids_min/pas[0])*pas[0]
     
@@ -215,7 +217,7 @@ def cree_figure(conf,l_jours,l_poids,typedonnee,liste_err):
         ax.set_yticks(echellemineure, minor=True)
     
         # échelle en temps
         ax.set_yticks(echellemineure, minor=True)
     
         # échelle en temps
-        pas=choix_echelle_temps(unite, age_maxi)
+        pas=u.choix_echelle_temps(unite, age_maxi)
         debug("pas choisis pour l'échelle en x : "+str(pas), liste_err)    
     
         echellemajeure = arange(0,age_maxi, pas[0])
         debug("pas choisis pour l'échelle en x : "+str(pas), liste_err)    
     
         echellemajeure = arange(0,age_maxi, pas[0])
@@ -226,8 +228,7 @@ def cree_figure(conf,l_jours,l_poids,typedonnee,liste_err):
         ax.set_xticks(echellemajeure, minor=False)
         ax.set_xticks(echellemineure, minor=True)    
 
         ax.set_xticks(echellemajeure, minor=False)
         ax.set_xticks(echellemineure, minor=True)    
 
-
-    #### Aspect du graphique
+    ################################# Aspect du graphique
 
     debug("On commende la déco du graphique", liste_err)
 
 
     debug("On commende la déco du graphique", liste_err)
 
@@ -255,13 +256,13 @@ def cree_figure(conf,l_jours,l_poids,typedonnee,liste_err):
 
     fig.tight_layout()
     
 
     fig.tight_layout()
     
-    debug("Fin de cree_figure", liste_err)
+    debug("Fin de cree_figure, tout va bien.", liste_err)
     return fig
 
 
 
 
     return fig
 
 
 
 
-### Pour extrapoler la courbe
+######################################## Pour extrapoler la courbe
 
 def prolongecourbe(tableauOMS, date, donnee, nouvdates, typecourbe, liste_err):
     """ tableauOMS est le ableau des données OMS. date et donnee sont la date (jours)
 
 def prolongecourbe(tableauOMS, date, donnee, nouvdates, typecourbe, liste_err):
     """ tableauOMS est le ableau des données OMS. date et donnee sont la date (jours)
@@ -286,17 +287,15 @@ def prolongecourbe(tableauOMS, date, donnee, nouvdates, typecourbe, liste_err):
         i+=1
     debug("prolongecourbe : on a trouvé la valeur de i : "+str(i),liste_err)
     if i>=len(ligneoms):
         i+=1
     debug("prolongecourbe : on a trouvé la valeur de i : "+str(i),liste_err)
     if i>=len(ligneoms):
-        warning("prolongation de courbe : pas réussi... donnée au dessus !", liste_err)
+        warning("prolongation de courbe : pas réussi... donnée trop haute !", liste_err)
         return []
     if i==idep:
         return []
     if i==idep:
-        warning("prolongation de courbe : pas réussi... donnée en dessous !", liste_err)
+        warning("prolongation de courbe : pas réussi... donnée trop basse !", liste_err)
         return []
     
     # Le coeff : donnee = coeff * l[i-1]+ (1-coeff)*ligne[i]
     # On utilisera la même chose pour la nouvelle donnee
         return []
     
     # Le coeff : donnee = coeff * l[i-1]+ (1-coeff)*ligne[i]
     # On utilisera la même chose pour la nouvelle donnee
-    #print(ligneoms[i], ligneoms[i-1])
     coeff = (donnee - ligneoms[i])/(ligneoms[i-1] - ligneoms[i])
     coeff = (donnee - ligneoms[i])/(ligneoms[i-1] - ligneoms[i])
-    #print("coeff : "+str(coeff))
     
     # extrapolations
     nouvdonnees = []
     
     # extrapolations
     nouvdonnees = []