]> git.immae.eu Git - perso/Denise/oms.git/blame - gestion_unites.py
nettoyage du code + passage en "défaut" de la grille améliorée (améliorée). Correctio...
[perso/Denise/oms.git] / gestion_unites.py
CommitLineData
5679dfd0
DL
1#!/usr/bin/env python3
2# -*- coding: utf-8 -*-
3
d03279e7 4from configuration import CONFIG
a680b2f7 5from gestion_erreurs import warning
5679dfd0
DL
6
7##################### outils pour affichage et choix de l'unité
8
9def choix_unite(maxi):
685a5f75 10 """ en fonction de l'âge maxi, on choisit une unité pertinente : jours, semaine, mois, année"""
5679dfd0
DL
11 if maxi<40:
12 return "jours"
30158504
DL
13 elif maxi <100:
14 return "semaines"
d03279e7 15 elif maxi<25*CONFIG["jours_dans_mois"]:
5679dfd0
DL
16 return "mois"
17 else:
18 return "années"
19
685a5f75
DL
20def choix_echelle_data(typedonnees, donneemax):
21 """ en fonction du type de données et du maxi (on suppose qu'on part à 0),
22 on choisit un intervalle raisonnable
23 On renvoie le couple des pas (majeur, mineur)
24 (0,0) en cas de problème avec le typedonnnes """
25
26 if typedonnees not in CONFIG["liste_typedonnees"]:
27 print("Type de données non valide : "+typedonnees)
28 return (0,0)
29
30 if typedonnees == "poids":
31 if donneemax>15:
32 return (5,1)
33 elif donneemax > 10:
a680b2f7 34 return (1,0.5)
685a5f75
DL
35 else:
36 return (1,0.2)
37 if typedonnees == "taille":
38 if donneemax>100:
39 return (10,2)
40 else:
41 return (5,1)
42
43def choix_echelle_temps(unite, tempsmaxi):
44 """ en fonction de l'unité voulue et du temps maximal (donné dans l'unité),
45 on choisit un intervalle raisonnable entre les pas.
46 On renvoie le couple des pas (majeur, mineur).
47 (0,0) en cas de problème avec l'unité
48 On met 0 en 2e arg si pas de grille secondaire"""
49 if unite not in CONFIG["liste_unites"]:
50 print("Unité non valide ! "+unite)
51 return (0,0)
52
53 if unite=="jours":
54 if tempsmaxi > 60: # pourquoi mettre en jours ?
55 return (30,1)
a680b2f7 56 elif tempsmaxi >15:
685a5f75
DL
57 return (7,1)
58 else:
59 return (1,0)
60 if unite=="semaines":
61 if tempsmaxi >50:
62 return (5,1)
a680b2f7 63 elif tempsmaxi > 10:
685a5f75
DL
64 return (2,1)
65 else:
66 return (1,1/7) # On met en jours
67
68 if unite=="mois":
a680b2f7
DL
69 if tempsmaxi > 24:
70 return (12,1)
685a5f75
DL
71 elif tempsmaxi > 10:
72 return (1,0)
73 else:
a680b2f7 74 return (1,0.25) # on met en semaines à peu près (quart de mois)
685a5f75
DL
75
76 if unite=="années":
77 return (1,1/12) # années / mois
78
5679dfd0
DL
79def convertitunite(jours,unite,liste_err):
80 """ convertit des jours à l'unité voulue
81 renvoie des float"""
82 if unite=="jours":
83 return jours
84 elif unite=="mois":
d03279e7 85 return jours/CONFIG["jours_dans_mois"]
5679dfd0 86 elif unite=="années":
d03279e7 87 return jours/CONFIG["jours_dans_annee"]
5679dfd0 88 elif unite=="semaines":
d03279e7 89 return jours/CONFIG["jours_dans_semaine"]
5679dfd0
DL
90 else:
91 warning("erreur sur l'unité : "+unite+" On laisse en jours",liste_err)
92 return jours
93
94def convertit_tableau(tableau,unite,liste_err):
95 """ convertit un tableau de jours en une autre unité.
96 Renvoie le nouveau tableau"""
97 return [convertitunite(elt,unite,liste_err) for elt in tableau]