]> git.immae.eu Git - perso/Denise/oms.git/blobdiff - gestion_donnees.py
extrapolation des courbes et calculs associés
[perso/Denise/oms.git] / gestion_donnees.py
index 880614de16c1235cd1aba63b6365200202df1e1b..123120b9a514f265d1dd1e53d28908656e532cb0 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
@@ -82,7 +83,7 @@ def calcule_max_graphique(l_jours):
         return CONFIG["jours_defaut_donneesvides"]
     else:
         jour_maxi = max(l_jours)# pas la peine d'aller très au delà du jour max
         return CONFIG["jours_defaut_donneesvides"]
     else:
         jour_maxi = max(l_jours)# pas la peine d'aller très au delà du jour max
-        jour_maxi = int(jour_maxi* 1.1)+3 # on rajoute un peu
+        jour_maxi = int(jour_maxi* 1.2)+3 # on rajoute un peu
         return jour_maxi
     
 
         return jour_maxi
     
 
@@ -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,7 +194,8 @@ 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."""
-    configuration = {}
+    # Initialisation
+    configuration = {"non_sauve": {}}
     
     # Pour le nom, osef qu'il soit vide
     nom = data.get("nom","")
     
     # Pour le nom, osef qu'il soit vide
     nom = data.get("nom","")
@@ -238,6 +240,7 @@ def gere_configuration(data,liste_err):
         
     # Même échelle sur tous les graphiques
     configuration["memechelle"] = gere_checkbox(data.get("memechelle",""))
         
     # Même échelle sur tous les graphiques
     configuration["memechelle"] = gere_checkbox(data.get("memechelle",""))
+
     
     # maxi. 0 signifie qu'on veut pas de maxi
     maxi = data.get("maxi","")
     
     # maxi. 0 signifie qu'on veut pas de maxi
     maxi = data.get("maxi","")
@@ -288,20 +291,49 @@ def gere_configuration(data,liste_err):
     if not(positionlegende in ['upper left','upper right','lower left','lower right']):
         positionlegende = "upper left"
     configuration["positionlegende"] = positionlegende
     if not(positionlegende in ['upper left','upper right','lower left','lower right']):
         positionlegende = "upper left"
     configuration["positionlegende"] = positionlegende
-
     
     configuration["couleurs"] = {}
     # gérer les couleurs
     for clecouleur in DEFAUT["couleurs"]:
         coul = rgb_vers_tuple(data.get("couleur_"+clecouleur,""),CONFIG["couleurs"][clecouleur],liste_err)
         configuration["couleurs"][clecouleur] = coul
     
     configuration["couleurs"] = {}
     # gérer les couleurs
     for clecouleur in DEFAUT["couleurs"]:
         coul = rgb_vers_tuple(data.get("couleur_"+clecouleur,""),CONFIG["couleurs"][clecouleur],liste_err)
         configuration["couleurs"][clecouleur] = coul
+
+
+    configuration["non_sauve"]["grilleamelio"] = gere_checkbox(data.get("grilleamelio",""))
+
+
+    #### La partie extrapolation n'a pas besoin d'être sauvée
+    configuration["non_sauve"]["prolongercourbes"] = gere_checkbox(data.get("prolongercourbes",""))
+
+    # Valeur par défaut : 1
+    debug(data.get("nbextradata", "aaargh"), liste_err)
+    nbextradata = data.get("nbextradata",1)
+    try:
+        nbextradata = int(nbextradata)
+    except:
+        warning("Le nombre de données sur lequel on extrapole est invalide : "+nbextradata, liste_err)
+        nbextradata = 1
+    configuration["non_sauve"]["nbextradata"] = nbextradata
+    
+    if data.get("calculextradata_type","") in CONFIG["liste_typedonnees"]:
+        configuration["non_sauve"]["calculextradata_type"] = data.get("calculextradata_type","")
+        configuration["non_sauve"]["calculextradata_age"] = convertit_jours_vers_python(data.get("calculextradata_age","0j"),liste_err)
+    else:
+        configuration["non_sauve"]["calculextradata_type"] = ""
+        # On ne met rien dans l'âge, pas la peine
     
     
-    # On y ajoute la partie "non sauvée" qui servira peut-être plus tard
-    configuration["non_sauve"] = {}
+    ctyped = data.get("calculextratemps_type","")
+    if ctyped in CONFIG["liste_typedonnees"]:
+        configuration["non_sauve"]["calculextratemps_type"] = ctyped
+        configuration["non_sauve"]["calculextratemps_val"] = convertit_donnee_vers_python(data.get("calculextratemps_val",""), ctyped, liste_err)
+    else:
+        configuration["non_sauve"]["calculextratemps_type"] = ""
     
     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 :
@@ -345,6 +377,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):
@@ -376,7 +409,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():
@@ -409,10 +442,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)