]> 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
-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
@@ -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
+
 ##########################
     
 # 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
-        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
     
 
@@ -150,7 +151,7 @@ def delta_date(date1,datenaissance):
     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
 
@@ -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)
@@ -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."""
-    configuration = {}
+    # Initialisation
+    configuration = {"non_sauve": {}}
     
     # 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",""))
+
     
     # 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
-
     
     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   
  
+    
 
+## 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 :
@@ -345,6 +377,7 @@ def gere_donnees(data,naissance,typedonnee,liste_err):
     return (l_jours,l_donnee)    
 
 
+# python vers Json
 #### 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"""
-#    nb_donnees = len(listes_jours)
+
     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
     
 
-
+### COnversion json vers formulaire
 # 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)