X-Git-Url: https://git.immae.eu/?p=perso%2FDenise%2Foms.git;a=blobdiff_plain;f=gestion_donnees.py;h=2068bb3359fd9a9c383932024f6e82de6636beb0;hp=a2d0a1e2b819431a83391243e9764a62613dd7ff;hb=61020126080c00be471ea41a0b25109469d8bda1;hpb=be2bf5155489b103e616845ffedb1a58c3808c48 diff --git a/gestion_donnees.py b/gestion_donnees.py index a2d0a1e..2068bb3 100644 --- a/gestion_donnees.py +++ b/gestion_donnees.py @@ -3,10 +3,14 @@ from configuration import * from gestion_erreurs import * +from gestion_couleurs import * import datetime import json import unidecode +import copy +### Les données "tournent" selon : +### python -> json -> (export/import) -> formulaire HTML -> données POST -> python etc ############ Fonctions de conversion @@ -170,11 +174,12 @@ def gere_configuration(data,liste_err): # unité unite = data.get("unite","") - if not (unite in liste_unites_valides): + + if not (unite in CONFIG["liste_unites"]): unite = "" #warning("L'unité "+unite+" n'est pas reconnue !",liste_err) configuration["unite"] = unite - + # grille grille = data.get("grille","") if grille != "on": @@ -192,13 +197,13 @@ def gere_configuration(data,liste_err): # dimensions du graphique largeur = data.get("largeur","") if largeur == "": - largeur = largeur_graphique + largeur = DEFAUT["largeur_graphique"] else: try: largeur = int(largeur) except: warning("La largeur "+largeur+"est invalide !",liste_err) - largeur = largeur_graphique + largeur = DEFAUT["largeur_graphique"] if largeur > largeur_graphique_max: largeur = largeur_graphique_max warning("Largeur trop grande !",liste_err) @@ -209,13 +214,13 @@ def gere_configuration(data,liste_err): hauteur = data.get("hauteur","") if hauteur == "": - hauteur = hauteur_graphique + hauteur = DEFAUT["hauteur_graphique"] else: try: hauteur = int(hauteur) except: warning("La hauteur "+hauteur+"est invalide !",liste_err) - hauteur = hauteur_graphique + hauteur = DEFAUT["hauteur_graphique"] if hauteur > hauteur_graphique_max: hauteur = hauteur_graphique_max warning("Hauteur trop grande !",liste_err) @@ -238,20 +243,16 @@ 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 + return configuration - -#def configuration_vers_texte(config): -# """ exporte le texte associé à une configuration -# on dumpe simplement sauf pour maxi """ -# texte = "# Section configuration\n" -# for (cle,val) in config.items(): -# if cle != "maxi": -# texte+= cle + "=" + str(val) + "\n" -# else: -# texte+= cle + "=" + convertit_age_vers_texte(val)+"\n" -# texte +="\n" -# return texte def gere_donneespoids(data,naissance,liste_err): @@ -289,25 +290,13 @@ def gere_donneespoids(data,naissance,liste_err): l_poids = [x[1] for x in liste_donnees] return (l_jours,l_poids) - - -#def donnees_poids_vers_texte(l_jours,l_poids): -# """ retourne le texte correspondant aux données de poids """ -# texte = "# Section données\n" -# -# for i in range(len(l_poids)): -# texte +=convertit_age_vers_texte(l_jours[i])+","+convertit_poids_vers_texte(l_poids[i])+"\n" -# -# texte+="\n" -# return texte - def donnees_vers_json(l_jours,l_poids,config): """ retourne le json à renvoyer""" - gros_dico = config.copy() + gros_dico = copy.deepcopy(config) l_jours2 = [convertit_age_vers_texte(d) for d in l_jours] gros_dico["data_j"] = l_jours2 gros_dico["data_p"] = l_poids @@ -316,41 +305,16 @@ def donnees_vers_json(l_jours,l_poids,config): gros_dico["naissance"] = convertit_date_vers_texte(gros_dico["naissance"]) # gérer l'age maxi gros_dico["maxi"] = convertit_age_vers_texte(gros_dico["maxi"]) + # gérer les couleurs +# for cle in ["couleur1", "couleur2", "couleur3", "couleur_fond","couleur_grille","couleur_cadretxt"]: +# gros_dico[cle] = tuple_vers_rgb(gros_dico[cle]) + for clecouleur in DEFAUT["couleurs"]: + gros_dico["couleurs"][clecouleur] = tuple_vers_rgb(gros_dico["couleurs"][clecouleur]) + + return json.dumps(gros_dico, indent=2,ensure_ascii=False ) -#def fichier_texte_vers_configdonnees(fichier,liste_err): -# """ prend le texte importé et l'exporte vers configuration et données -# sous forme de valeurs du formulaire """ -# -# valform = {} -# indice_formulaire = 0 # l'indice du formulaire pour les données : age_1, date_1, poids_1 etc -# num_ligne = 0 -# lignes = fichier.readlines() -# for ligne in lignes: -# num_ligne +=1 -# ligne = str(ligne,"utf8") -# ligne = ligne.rstrip("\n") -# if ligne != "" and ligne[0] != "#" and not(ligne.isspace()): # les lignes commençant par # sont des commentaires -# # On essaie de partitionner pour voir -# (var,egal,val) = ligne.partition("=") -# if egal == "=": # c'est une ligne de config -# valform[var] = val -# else: -# (age,virgule,poids) = ligne.partition(",") # On partitionne avec , -# if virgule == ",": -# # c'est une ligne de data -# valform["age_"+str(indice_formulaire)] = age -# valform["poids_"+str(indice_formulaire)] = poids -# indice_formulaire +=1 -# -# else: -# warning("La ligne "+str(num_ligne)+" n'est pas reconnue et sera ignorée : <"+ligne+">",liste_err) -# -# #le nb max du formulaire -# valform["nb_data"] = max(indice_formulaire +2,nombre_lignes_form) -# -# return valform def fichier_json_vers_configdonnees(fichier,liste_err): """ prend le json importé et l'exporte vers les valeurs du formulaire """ @@ -369,7 +333,7 @@ def fichier_json_vers_configdonnees(fichier,liste_err): valform["age_"+str(i)] = l_jours[i] valform["poids_"+str(i)] = l_poids[i] - valform["nb_data"] = max(long +2,nombre_lignes_form) + valform["nb_data"] = max(long +2,DEFAUT["nb_data"]) return valform