From 451bdc74fe50a124a3fe0733b675c8f01b50ee53 Mon Sep 17 00:00:00 2001 From: Denise sur Lya Date: Wed, 28 Jul 2021 13:43:30 +0200 Subject: =?UTF-8?q?Gestion=20des=20cat=C3=A9gories?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gere_grille.py | 52 +++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 37 insertions(+), 15 deletions(-) (limited to 'gere_grille.py') 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 import gere_erreurs as e from config import DEFAUT, CONFIG -def genere_grille(config, textes): + +def genere_grille(config, textes, liste_err): """ génère une grille avec des éléments aléatoires du tableau textes. - textes est un tableau de tableau : la phrase, puis les réponses + textes est un tableau de tableau : la catégorie, la phrase, puis les réponses Dans la grille on mettra une liste avec la question et les réponses Si y'a pas assez, on met la liste vide [] config contient tout ce qu'on veut pour la grille, ici on utilisera les dimensions et les phrases_additionnelles - on enlève aussi les réponses si config['reponses_presentes'] n'est pas là""" - + on enlève aussi les réponses si config['reponses_presentes'] n'est pas là + et on vire les éléments qui ne sont pas de la bonne catégorie""" + e.debug("Début de genere_grille, config : "+str(config), liste_err) + e.debug("textes "+str(textes), liste_err) nblignes, nbcol = config["nblignes"], config["nbcolonnes"] soustab = config.get("phrases_add",[]).copy() # On met les phrases custom en premier soustab = soustab + [ [] ]*config["nbcasesvides"] # On ajoute les blocs vides voulus - #print(soustab) + # Les textes dans lesquels on pioche, sans les catégories ni les trucs qu'on veut pas + textes_propre = [] + categ = config.get("categories",[]) + #print(str(categ)) + for ligne in textes: + if (ligne[0] in categ) or (categ == []) : + # On met cette ligne + if config.get("reponses_presentes", True): # Si on veut les réponses + textes_propre.append(ligne[1:]) + else: + textes_propre.append(ligne[1:2]) # Snas les réponses + e.debug("textes_propre : "+str(textes_propre), liste_err) nbdata = nbcol*nblignes - config["nbcasesvides"]-len(config.get("phrases_add", [])) # Nombre d'entrées à prendre if nbdata>0: # Sinon y'a pas besoin du tableau - if nbdata <= len(textes): - soustab = soustab+random.sample(textes, nbdata) + if nbdata <= len(textes_propre): + soustab = soustab+random.sample(textes_propre, nbdata) else: # on n'a pas assez de textes, on met des 0 - soustab = soustab + textes + ['0']*(nbdata - len(textes)) - + soustab = soustab + textes_propre + [ []]*(nbdata - len(textes_propre)) + + e.debug("Avant mélange : "+str(soustab), liste_err) #print(soustab) # On mélange ! random.shuffle(soustab) - # Si on ne veut pas des réponses, on ne garde que le premier élément - if not(config.get("reponses_presentes", True)): - #print("Je veux pas les réponses !") - soustab = [ [elt[0] ] for elt in soustab ] - #print(soustab) +# # Si on ne veut pas des réponses, on ne garde que le premier élément +# if not(config.get("reponses_presentes", True)): +# #print("Je veux pas les réponses !") +# soustab = [ [elt[0] ] for elt in soustab ] +# #print(soustab) # Créer la grille @@ -83,7 +98,7 @@ def decode_grille(chaineencodee, liste_err): data = json.loads(decodee) return data -########################### +########################### gestion des données web ############################### def gere_donnees_custom(data, liste_err): """ 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): # Veut-on les réponses ? conf["reponses_presentes"] = gere_checkbox(data.get("reponses_presentes","")) + # Liste des catégories + conf["categories"] = [] + for (key, val) in data.items(): + if key[0:10] == "categorie_" and val=="on": + conf["categories"].append(key[10:]) + + e.debug(str(conf), liste_err) return conf ### Fonctions pour gérer les données saisies -- cgit v1.2.3