diff options
Diffstat (limited to 'gere_grille.py')
-rw-r--r-- | gere_grille.py | 52 |
1 files changed, 37 insertions, 15 deletions
diff --git a/gere_grille.py b/gere_grille.py index 6898f52..25ff51c 100644 --- a/gere_grille.py +++ b/gere_grille.py | |||
@@ -9,40 +9,55 @@ import random, zlib, base64, json | |||
9 | import gere_erreurs as e | 9 | import gere_erreurs as e |
10 | from config import DEFAUT, CONFIG | 10 | from config import DEFAUT, CONFIG |
11 | 11 | ||
12 | def genere_grille(config, textes): | 12 | |
13 | def genere_grille(config, textes, liste_err): | ||
13 | """ génère une grille avec des éléments aléatoires du tableau textes. | 14 | """ génère une grille avec des éléments aléatoires du tableau textes. |
14 | textes est un tableau de tableau : la phrase, puis les réponses | 15 | textes est un tableau de tableau : la catégorie, la phrase, puis les réponses |
15 | Dans la grille on mettra une liste avec la question et les réponses | 16 | Dans la grille on mettra une liste avec la question et les réponses |
16 | Si y'a pas assez, on met la liste vide [] | 17 | Si y'a pas assez, on met la liste vide [] |
17 | 18 | ||
18 | config contient tout ce qu'on veut pour la grille, | 19 | config contient tout ce qu'on veut pour la grille, |
19 | ici on utilisera les dimensions et les phrases_additionnelles | 20 | ici on utilisera les dimensions et les phrases_additionnelles |
20 | on enlève aussi les réponses si config['reponses_presentes'] n'est pas là""" | 21 | on enlève aussi les réponses si config['reponses_presentes'] n'est pas là |
21 | 22 | et on vire les éléments qui ne sont pas de la bonne catégorie""" | |
23 | e.debug("Début de genere_grille, config : "+str(config), liste_err) | ||
24 | e.debug("textes "+str(textes), liste_err) | ||
22 | nblignes, nbcol = config["nblignes"], config["nbcolonnes"] | 25 | nblignes, nbcol = config["nblignes"], config["nbcolonnes"] |
23 | 26 | ||
24 | 27 | ||
25 | soustab = config.get("phrases_add",[]).copy() # On met les phrases custom en premier | 28 | soustab = config.get("phrases_add",[]).copy() # On met les phrases custom en premier |
26 | soustab = soustab + [ [] ]*config["nbcasesvides"] # On ajoute les blocs vides voulus | 29 | soustab = soustab + [ [] ]*config["nbcasesvides"] # On ajoute les blocs vides voulus |
27 | 30 | ||
28 | #print(soustab) | 31 | # Les textes dans lesquels on pioche, sans les catégories ni les trucs qu'on veut pas |
32 | textes_propre = [] | ||
33 | categ = config.get("categories",[]) | ||
34 | #print(str(categ)) | ||
35 | for ligne in textes: | ||
36 | if (ligne[0] in categ) or (categ == []) : | ||
37 | # On met cette ligne | ||
38 | if config.get("reponses_presentes", True): # Si on veut les réponses | ||
39 | textes_propre.append(ligne[1:]) | ||
40 | else: | ||
41 | textes_propre.append(ligne[1:2]) # Snas les réponses | ||
42 | e.debug("textes_propre : "+str(textes_propre), liste_err) | ||
29 | 43 | ||
30 | nbdata = nbcol*nblignes - config["nbcasesvides"]-len(config.get("phrases_add", [])) # Nombre d'entrées à prendre | 44 | nbdata = nbcol*nblignes - config["nbcasesvides"]-len(config.get("phrases_add", [])) # Nombre d'entrées à prendre |
31 | if nbdata>0: # Sinon y'a pas besoin du tableau | 45 | if nbdata>0: # Sinon y'a pas besoin du tableau |
32 | if nbdata <= len(textes): | 46 | if nbdata <= len(textes_propre): |
33 | soustab = soustab+random.sample(textes, nbdata) | 47 | soustab = soustab+random.sample(textes_propre, nbdata) |
34 | else: # on n'a pas assez de textes, on met des 0 | 48 | else: # on n'a pas assez de textes, on met des 0 |
35 | soustab = soustab + textes + ['0']*(nbdata - len(textes)) | 49 | soustab = soustab + textes_propre + [ []]*(nbdata - len(textes_propre)) |
36 | 50 | ||
51 | e.debug("Avant mélange : "+str(soustab), liste_err) | ||
37 | #print(soustab) | 52 | #print(soustab) |
38 | # On mélange ! | 53 | # On mélange ! |
39 | random.shuffle(soustab) | 54 | random.shuffle(soustab) |
40 | 55 | ||
41 | # Si on ne veut pas des réponses, on ne garde que le premier élément | 56 | # # Si on ne veut pas des réponses, on ne garde que le premier élément |
42 | if not(config.get("reponses_presentes", True)): | 57 | # if not(config.get("reponses_presentes", True)): |
43 | #print("Je veux pas les réponses !") | 58 | # #print("Je veux pas les réponses !") |
44 | soustab = [ [elt[0] ] for elt in soustab ] | 59 | # soustab = [ [elt[0] ] for elt in soustab ] |
45 | #print(soustab) | 60 | # #print(soustab) |
46 | 61 | ||
47 | 62 | ||
48 | # Créer la grille | 63 | # Créer la grille |
@@ -83,7 +98,7 @@ def decode_grille(chaineencodee, liste_err): | |||
83 | data = json.loads(decodee) | 98 | data = json.loads(decodee) |
84 | return data | 99 | return data |
85 | 100 | ||
86 | ########################### | 101 | ########################### gestion des données web ############################### |
87 | 102 | ||
88 | def gere_donnees_custom(data, liste_err): | 103 | def gere_donnees_custom(data, liste_err): |
89 | """ data est le dictionnaire de requête. Gère les données reçues | 104 | """ data est le dictionnaire de requête. Gère les données reçues |
@@ -116,6 +131,13 @@ def gere_donnees_custom(data, liste_err): | |||
116 | # Veut-on les réponses ? | 131 | # Veut-on les réponses ? |
117 | conf["reponses_presentes"] = gere_checkbox(data.get("reponses_presentes","")) | 132 | conf["reponses_presentes"] = gere_checkbox(data.get("reponses_presentes","")) |
118 | 133 | ||
134 | # Liste des catégories | ||
135 | conf["categories"] = [] | ||
136 | for (key, val) in data.items(): | ||
137 | if key[0:10] == "categorie_" and val=="on": | ||
138 | conf["categories"].append(key[10:]) | ||
139 | |||
140 | e.debug(str(conf), liste_err) | ||
119 | return conf | 141 | return conf |
120 | 142 | ||
121 | ### Fonctions pour gérer les données saisies | 143 | ### Fonctions pour gérer les données saisies |