summaryrefslogtreecommitdiff
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
parent77986b320dfc33625ea2df7f4049cb6c7f8c222e (diff)
downloadbingo-451bdc74fe50a124a3fe0733b675c8f01b50ee53.tar.gz
bingo-451bdc74fe50a124a3fe0733b675c8f01b50ee53.tar.zst
bingo-451bdc74fe50a124a3fe0733b675c8f01b50ee53.zip
Gestion des catégories
-rw-r--r--app.py16
-rw-r--r--config.py3
-rw-r--r--data_textes.py17
-rw-r--r--gere_grille.py52
-rw-r--r--static/style.css9
5 files changed, 71 insertions, 26 deletions
diff --git a/app.py b/app.py
index 6ef4667..abb2579 100644
--- a/app.py
+++ b/app.py
@@ -11,7 +11,8 @@ Created on Mon Jul 26 17:31:48 2021
11 11
12import flask 12import flask
13 13
14from data_textes import tabletextes, tablecomplete, extraire_textes_par_cat 14import data_textes as data
15#from data_textes import tabletextes, tablecomplete, extraire_textes_par_cat
15import gere_grille as g 16import gere_grille as g
16import gere_erreurs as e 17import gere_erreurs as e
17from config import DEFAUT, CONFIG 18from config import DEFAUT, CONFIG
@@ -33,12 +34,15 @@ app = flask.Flask(__name__)
33@app.route('/', methods=["GET", "POST"]) 34@app.route('/', methods=["GET", "POST"])
34def index(): 35def index():
35 liste_err = e.initialise_erreurs() 36 liste_err = e.initialise_erreurs()
37 tablecomplete = data.lire_fichier_csv_simple(data.fichier_bingo)
38 #categ= data.extraire_categories(tablecomplete)
36 #print(tabletextes) 39 #print(tabletextes)
37 idg = flask.request.args.get("grille", "") # Id de grille passée en param (ou pas) 40 idg = flask.request.args.get("grille", "") # Id de grille passée en param (ou pas)
38 if idg != "": # Si on a mis un url de grille 41 if idg != "": # Si on a mis un url de grille
39 conf = g.decode_grille(idg, liste_err) 42 conf = g.decode_grille(idg, liste_err)
40 if conf == {}: # Erreur à la génération 43 if conf == {}: # Erreur à la génération
41 bingo = g.genere_grille(DEFAUT, tabletextes) 44 #tabletextes = data.extraire_qr(tablecomplete, categ) # Toutes les remarques
45 bingo = g.genere_grille(DEFAUT, tablecomplete, liste_err)
42 conf = DEFAUT.copy() 46 conf = DEFAUT.copy()
43 e.erreur("L'url de la grille n'est pas valide...", liste_err) 47 e.erreur("L'url de la grille n'est pas valide...", liste_err)
44 else: 48 else:
@@ -49,7 +53,8 @@ def index():
49 conf = g.gere_donnees_custom(flask.request.form, liste_err) 53 conf = g.gere_donnees_custom(flask.request.form, liste_err)
50 else: 54 else:
51 conf= DEFAUT.copy() 55 conf= DEFAUT.copy()
52 bingo = g.genere_grille(conf, tabletextes) # aléatoire 56 #tabletextes = data.extraire_qr(tablecomplete, conf["categories"])
57 bingo = g.genere_grille(conf, tablecomplete, liste_err) # aléatoire avec la config donnée
53 58
54 chainecode = g.encode_grille(conf, bingo, liste_err) 59 chainecode = g.encode_grille(conf, bingo, liste_err)
55 60
@@ -58,11 +63,12 @@ def index():
58 63
59@app.route('/custom') 64@app.route('/custom')
60def custom(): 65def custom():
66 tablecomplete = data.lire_fichier_csv_simple(data.fichier_bingo)
67 categ, tableqr = data.extraire_textes_par_cat(tablecomplete)
61 liste_err = e.initialise_erreurs() 68 liste_err = e.initialise_erreurs()
62 categ, tableqr = extraire_textes_par_cat(tablecomplete)
63 nombre_categ = [len(elt) for elt in tableqr] 69 nombre_categ = [len(elt) for elt in tableqr]
64 print(nombre_categ) 70 print(nombre_categ)
65 return flask.render_template("custom.html", DEFAUT=DEFAUT,CONFIG=CONFIG, nbdata=len(tabletextes), categ=categ, nbparcat = nombre_categ, e=liste_err[0]+liste_err[1]+liste_err[2]) 71 return flask.render_template("custom.html", DEFAUT=DEFAUT,CONFIG=CONFIG, nbdata=len(tablecomplete), categ=categ, nbparcat = nombre_categ, e=liste_err[0]+liste_err[1]+liste_err[2])
66 72
67if __name__ == "__main__": 73if __name__ == "__main__":
68 # print("Mode debug maison : "+str(niveau_debug)) 74 # print("Mode debug maison : "+str(niveau_debug))
diff --git a/config.py b/config.py
index eafe94d..dce2702 100644
--- a/config.py
+++ b/config.py
@@ -13,6 +13,9 @@ DEFAUT["nblignes"] = 4
13DEFAUT["nbcolonnes"] = 3 13DEFAUT["nbcolonnes"] = 3
14DEFAUT["nbcasesvides"] = 0 14DEFAUT["nbcasesvides"] = 0
15DEFAUT["reponses_presentes"] = True # veut-on proposer les réponses 15DEFAUT["reponses_presentes"] = True # veut-on proposer les réponses
16DEFAUT["categories"] = [] # Tout
17
18# Score
16 19
17# Configuration 20# Configuration
18 21
diff --git a/data_textes.py b/data_textes.py
index 85baa54..dc8626a 100644
--- a/data_textes.py
+++ b/data_textes.py
@@ -74,12 +74,19 @@ def extraire_textes_par_cat(table):
74 74
75 return (categ,tableqr) 75 return (categ,tableqr)
76 76
77def extraire_qr(table): 77def extraire_qr(table, listecateg):
78 """ on enlève juste la catégorie en début de ligne""" 78 """
79 table2 = [ ligne[1:] for ligne in table] 79 table est la table des remarques. On sélectionne uniquement
80 les remarques des catégories de la liste et
81 on enlève juste la catégorie en début de ligne
82 Si listecateg est vide on met tout le monde.
83 """
84 table2 = []
85 for ligne in table:
86 if ligne[0] in listecateg or listecateg == []:
87 table2.append(ligne[1:])
80 return table2 88 return table2
81 89
82tablecomplete = lire_fichier_csv_simple(fichier_bingo) 90
83tabletextes = extraire_qr(tablecomplete)
84 91
85#liste_cat, liste_textes = extraire_textes_par_cat(lire_fichier_csv_simple(fichier_bingo)) \ No newline at end of file 92#liste_cat, liste_textes = extraire_textes_par_cat(lire_fichier_csv_simple(fichier_bingo)) \ No newline at end of file
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
diff --git a/static/style.css b/static/style.css
index 36d5569..3fc08f7 100644
--- a/static/style.css
+++ b/static/style.css
@@ -1,8 +1,10 @@
1/* Styles divers */ 1/* Styles divers */
2.cliquable { 2.cliquable {
3 cursor: pointer;
4 text-decoration: underline; 3 text-decoration: underline;
5} 4}
5.cliquable:hover {
6 cursor: pointer;
7}
6 8
7.petit { 9.petit {
8 font-size: 0.8em; 10 font-size: 0.8em;
@@ -24,6 +26,11 @@
24 margin: 0px; 26 margin: 0px;
25 padding: 3px ; 27 padding: 3px ;
26 text-align: center ; 28 text-align: center ;
29 min-width: 10em;
30 min-height: 3em ;
31}
32#grille td:hover {
33 cursor: pointer;
27} 34}
28 35
29#grille td.vide { 36#grille td.vide {