diff options
Diffstat (limited to 'gestion_donnees.py')
-rw-r--r-- | gestion_donnees.py | 37 |
1 files changed, 29 insertions, 8 deletions
diff --git a/gestion_donnees.py b/gestion_donnees.py index 5876c5a..372d6aa 100644 --- a/gestion_donnees.py +++ b/gestion_donnees.py | |||
@@ -46,7 +46,7 @@ def convertit_jours_vers_python(chaine,liste_err): | |||
46 | chainenombre = "" | 46 | chainenombre = "" |
47 | elif lettre != ' ': | 47 | elif lettre != ' ': |
48 | # autre caractère : bizarre ? | 48 | # autre caractère : bizarre ? |
49 | warning("convertit_jour_vers_python : caractère invalide : "+lettre,liste_err) | 49 | warning("problème à la conversion de "+chaine+". Caractère invalide : "+lettre,liste_err) |
50 | # à la fin s'il reste qqch on le garde dans les jours | 50 | # à la fin s'il reste qqch on le garde dans les jours |
51 | if chainenombre != "": | 51 | if chainenombre != "": |
52 | agejours += int(chainenombre) | 52 | agejours += int(chainenombre) |
@@ -150,8 +150,8 @@ def convertit_date_vers_texte(date): | |||
150 | if date == "": | 150 | if date == "": |
151 | return "" | 151 | return "" |
152 | else: | 152 | else: |
153 | return (str(date.year)+"-"+str(date.month)+"-"+str(date.day)) | 153 | #return (str(date.year)+"-"+str(date.month)+"-"+str(date.day)) |
154 | 154 | return str(date) | |
155 | 155 | ||
156 | def delta_date(date1,datenaissance): | 156 | def delta_date(date1,datenaissance): |
157 | """ renvoie le nombre de jours (entier) entre date1 et datenaissance format "datetime" | 157 | """ renvoie le nombre de jours (entier) entre date1 et datenaissance format "datetime" |
@@ -164,6 +164,7 @@ def delta_date(date1,datenaissance): | |||
164 | return jours | 164 | return jours |
165 | 165 | ||
166 | 166 | ||
167 | |||
167 | ################### On regroupe tout ce qui gère les données en une fonction | 168 | ################### On regroupe tout ce qui gère les données en une fonction |
168 | 169 | ||
169 | def web_vers_python(data,liste_err, court=False): | 170 | def web_vers_python(data,liste_err, court=False): |
@@ -417,6 +418,7 @@ def gere_donnees(data,naissance,typedonnee,liste_err): | |||
417 | def donnees_vers_json(l_jours,l_poids,l_jourst,l_taille,config): | 418 | def donnees_vers_json(l_jours,l_poids,l_jourst,l_taille,config): |
418 | """ retourne le json à renvoyer""" | 419 | """ retourne le json à renvoyer""" |
419 | gros_dico = copy.deepcopy(config) | 420 | gros_dico = copy.deepcopy(config) |
421 | gros_dico["version"] = CONFIG["version"] | ||
420 | l_jours2 = [convertit_age_vers_texte(d) for d in l_jours] | 422 | l_jours2 = [convertit_age_vers_texte(d) for d in l_jours] |
421 | l_jourst2 = [convertit_age_vers_texte(d) for d in l_jourst] | 423 | l_jourst2 = [convertit_age_vers_texte(d) for d in l_jourst] |
422 | gros_dico["data_j"] = l_jours2 | 424 | gros_dico["data_j"] = l_jours2 |
@@ -426,6 +428,13 @@ def donnees_vers_json(l_jours,l_poids,l_jourst,l_taille,config): | |||
426 | # gérer la date de naissance | 428 | # gérer la date de naissance |
427 | if gros_dico.get("naissance","") != "": | 429 | if gros_dico.get("naissance","") != "": |
428 | gros_dico["naissance"] = convertit_date_vers_texte(gros_dico["naissance"]) | 430 | gros_dico["naissance"] = convertit_date_vers_texte(gros_dico["naissance"]) |
431 | # Calcul de toutes les dates de données | ||
432 | l_dates_poids = [convertit_date_vers_texte( config["naissance"] + datetime.timedelta(days=jours) ) for jours in l_jours] | ||
433 | l_dates_taille = [convertit_date_vers_texte( config["naissance"] + datetime.timedelta(days=jours) ) for jours in l_jourst] | ||
434 | gros_dico["data_dates_poids"]= l_dates_poids | ||
435 | gros_dico["data_dates_taille"] = l_dates_taille | ||
436 | |||
437 | |||
429 | # gérer l'age maxi | 438 | # gérer l'age maxi |
430 | gros_dico["maxi"] = convertit_age_vers_texte(gros_dico["maxi"]) | 439 | gros_dico["maxi"] = convertit_age_vers_texte(gros_dico["maxi"]) |
431 | # gérer les couleurs | 440 | # gérer les couleurs |
@@ -438,11 +447,12 @@ def donnees_vers_json(l_jours,l_poids,l_jourst,l_taille,config): | |||
438 | 447 | ||
439 | return json.dumps(gros_dico, indent=2,ensure_ascii=False ) | 448 | return json.dumps(gros_dico, indent=2,ensure_ascii=False ) |
440 | 449 | ||
441 | def fusionne_donnees(listes_jours,listes_donnees): | 450 | def fusionne_donnees(listes_jours,listes_donnees, listes_dates): |
442 | """ prend en argument deux dicos de listes. Chaque liste de jours est associée à une liste | 451 | """ prend en argument deux dicos de listes. Chaque liste de jours est associée à une liste |
443 | 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 | 452 | 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 |
444 | ("age":truc, "donnee1":truc, "donnee2":truc, ...) triée par ordre de jours. Si jamais une des données est vide, | 453 | {"age":truc, "donnee1":truc, "donnee2":truc, ...} triée par ordre de jours. Si jamais une des données est vide, |
445 | le champ du dictionnaire n'est pas rempli""" | 454 | le champ du dictionnaire n'est pas rempli |
455 | Le troisième paquet de listes (les dates) peut être vide ou bien simiaire : même clés.""" | ||
446 | 456 | ||
447 | def fini(lj): | 457 | def fini(lj): |
448 | """ teste si les listes sont toutes vides """ | 458 | """ teste si les listes sont toutes vides """ |
@@ -468,11 +478,18 @@ def fusionne_donnees(listes_jours,listes_donnees): | |||
468 | # On extrait les données dans les deux listes (jours et données) | 478 | # On extrait les données dans les deux listes (jours et données) |
469 | jour = listes_jours[typedonnee].pop(0) | 479 | jour = listes_jours[typedonnee].pop(0) |
470 | donnee = listes_donnees[typedonnee].pop(0) | 480 | donnee = listes_donnees[typedonnee].pop(0) |
481 | |||
471 | if liste_f == [] or jour != liste_f[-1]["age"]: # Si le jour est un "nouveau" jour | 482 | if liste_f == [] or jour != liste_f[-1]["age"]: # Si le jour est un "nouveau" jour |
472 | liste_f.append({"age":jour}) | 483 | liste_f.append({"age":jour}) |
473 | # On met à jour l'élément | 484 | # On met à jour l'élément (ou on l'ajoute) |
474 | liste_f[-1][typedonnee] = donnee | 485 | liste_f[-1][typedonnee] = donnee |
475 | 486 | ||
487 | # Si il y a une date associée, on la met ! | ||
488 | if listes_dates[typedonnee] != []: | ||
489 | date = listes_dates[typedonnee].pop(0) | ||
490 | liste_f[-1]["date"] = convertit_date_vers_texte(date) | ||
491 | |||
492 | |||
476 | return liste_f | 493 | return liste_f |
477 | 494 | ||
478 | 495 | ||
@@ -492,16 +509,20 @@ def fichier_json_vers_configdonnees(chaine,liste_err): | |||
492 | 509 | ||
493 | listes_jours = {} | 510 | listes_jours = {} |
494 | listes_donnees = {} | 511 | listes_donnees = {} |
512 | listes_dates = {} | ||
495 | for typed in CONFIG["liste_typedonnees"]: | 513 | for typed in CONFIG["liste_typedonnees"]: |
496 | if typed == "poids": # pour la rétrocompatibilité | 514 | if typed == "poids": # pour la rétrocompatibilité |
497 | listes_jours[typed] = valform.get("data_j",[]) | 515 | listes_jours[typed] = valform.get("data_j",[]) |
498 | listes_donnees[typed] = valform.get("data_p",[]) | 516 | listes_donnees[typed] = valform.get("data_p",[]) |
517 | listes_dates[typed] = valform.get("data_dates_"+typed,[]) | ||
499 | else: | 518 | else: |
500 | listes_jours[typed] = valform.get("data_jours_"+typed,[]) | 519 | listes_jours[typed] = valform.get("data_jours_"+typed,[]) |
501 | listes_donnees[typed] = valform.get("data_"+typed,[]) | 520 | listes_donnees[typed] = valform.get("data_"+typed,[]) |
521 | listes_dates[typed] = valform.get("data_dates_"+typed,[]) | ||
522 | |||
502 | 523 | ||
503 | debug("Avant fusion : listes jours "+str(listes_jours),liste_err) | 524 | debug("Avant fusion : listes jours "+str(listes_jours),liste_err) |
504 | liste_donnees = fusionne_donnees(listes_jours,listes_donnees) | 525 | liste_donnees = fusionne_donnees(listes_jours,listes_donnees, listes_dates) |
505 | debug("Fusion de listes ok. Liste moche : "+str(liste_donnees),liste_err) | 526 | debug("Fusion de listes ok. Liste moche : "+str(liste_donnees),liste_err) |
506 | for i in range(len(liste_donnees)): | 527 | for i in range(len(liste_donnees)): |
507 | for (cle,val) in liste_donnees[i].items(): | 528 | for (cle,val) in liste_donnees[i].items(): |