summaryrefslogtreecommitdiff
path: root/gere_grille.py
diff options
context:
space:
mode:
authorDenise sur Lya <sekhmet@lya>2021-07-28 13:43:30 +0200
committerDenise sur Lya <sekhmet@lya>2021-07-28 13:43:30 +0200
commit451bdc74fe50a124a3fe0733b675c8f01b50ee53 (patch)
tree342322f3b37bfacc750e2ce9477f6ad0a5419a1d /gere_grille.py
parent77986b320dfc33625ea2df7f4049cb6c7f8c222e (diff)
downloadbingo-451bdc74fe50a124a3fe0733b675c8f01b50ee53.tar.gz
bingo-451bdc74fe50a124a3fe0733b675c8f01b50ee53.tar.zst
bingo-451bdc74fe50a124a3fe0733b675c8f01b50ee53.zip
Gestion des catégories
Diffstat (limited to 'gere_grille.py')
-rw-r--r--gere_grille.py52
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
9import gere_erreurs as e 9import gere_erreurs as e
10from config import DEFAUT, CONFIG 10from config import DEFAUT, CONFIG
11 11
12def genere_grille(config, textes): 12
13def 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
88def gere_donnees_custom(data, liste_err): 103def 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