summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenise sur Lya <sekhmet@lya>2021-07-28 17:30:33 +0200
committerDenise sur Lya <sekhmet@lya>2021-07-28 17:30:33 +0200
commitc95f4f8f7545bd508a9d68686f7dc5fc33a4cf0d (patch)
tree3c413cd2243e53a264e54c788e4cc24ec29dd87d
parent451bdc74fe50a124a3fe0733b675c8f01b50ee53 (diff)
downloadbingo-c95f4f8f7545bd508a9d68686f7dc5fc33a4cf0d.tar.gz
bingo-c95f4f8f7545bd508a9d68686f7dc5fc33a4cf0d.tar.zst
bingo-c95f4f8f7545bd508a9d68686f7dc5fc33a4cf0d.zip
ajouts divers, dont la page apropos
-rw-r--r--app.py24
-rw-r--r--config.py8
-rw-r--r--data/bingo_data.txt4
-rw-r--r--gere_grille.py10
-rw-r--r--static/outilspage.js15
-rw-r--r--templates/apropos.html24
-rw-r--r--templates/base.html2
-rw-r--r--templates/custom.html8
-rw-r--r--templates/index.html12
9 files changed, 89 insertions, 18 deletions
diff --git a/app.py b/app.py
index abb2579..4a1240f 100644
--- a/app.py
+++ b/app.py
@@ -35,24 +35,26 @@ app = flask.Flask(__name__)
35def index(): 35def index():
36 liste_err = e.initialise_erreurs() 36 liste_err = e.initialise_erreurs()
37 tablecomplete = data.lire_fichier_csv_simple(data.fichier_bingo) 37 tablecomplete = data.lire_fichier_csv_simple(data.fichier_bingo)
38 #categ= data.extraire_categories(tablecomplete) 38
39 #print(tabletextes) 39 conf = DEFAUT.copy()
40 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)
41 if idg != "": # Si on a mis un url de grille 41 if idg != "": # Si on a mis un url de grille
42 conf = g.decode_grille(idg, liste_err) 42
43 if conf == {}: # Erreur à la génération 43 confimport = g.decode_grille(idg, liste_err)
44 if confimport == {}: # Erreur à la génération
44 #tabletextes = data.extraire_qr(tablecomplete, categ) # Toutes les remarques 45 #tabletextes = data.extraire_qr(tablecomplete, categ) # Toutes les remarques
45 bingo = g.genere_grille(DEFAUT, tablecomplete, liste_err) 46 bingo = g.genere_grille(DEFAUT, tablecomplete, liste_err)
46 conf = DEFAUT.copy()
47 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)
48 else: 48 else:
49 conf.update(confimport)
49 bingo=conf["grille"] 50 bingo=conf["grille"]
50 else: 51 else:
51 # On récupère les données post (et ça sera défaut si y'a rien) 52 # On récupère les données post (et ça sera défaut si y'a rien)
52 if flask.request.method == "POST": 53 if flask.request.method == "POST":
53 conf = g.gere_donnees_custom(flask.request.form, liste_err) 54 e.debug("avant utilisation post : "+str(conf), liste_err)
54 else: 55 conf.update(g.gere_donnees_custom(flask.request.form, liste_err))
55 conf= DEFAUT.copy() 56 e.debug("après utilisation post : "+str(conf), liste_err)
57
56 #tabletextes = data.extraire_qr(tablecomplete, conf["categories"]) 58 #tabletextes = data.extraire_qr(tablecomplete, conf["categories"])
57 bingo = g.genere_grille(conf, tablecomplete, liste_err) # aléatoire avec la config donnée 59 bingo = g.genere_grille(conf, tablecomplete, liste_err) # aléatoire avec la config donnée
58 60
@@ -70,6 +72,12 @@ def custom():
70 print(nombre_categ) 72 print(nombre_categ)
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]) 73 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])
72 74
75@app.route('/apropos')
76def apropos():
77 #liste_err = e.initialise_erreurs()
78 return flask.render_template("apropos.html")
79
80
73if __name__ == "__main__": 81if __name__ == "__main__":
74 # print("Mode debug maison : "+str(niveau_debug)) 82 # print("Mode debug maison : "+str(niveau_debug))
75 app.run(host='0.0.0.0',debug=True) \ No newline at end of file 83 app.run(host='0.0.0.0',debug=True) \ No newline at end of file
diff --git a/config.py b/config.py
index dce2702..e42e8ba 100644
--- a/config.py
+++ b/config.py
@@ -10,12 +10,18 @@ DEFAUT = {}
10DEFAUT["titre"] = "Le bingo de l'allaitement" 10DEFAUT["titre"] = "Le bingo de l'allaitement"
11 11
12DEFAUT["nblignes"] = 4 12DEFAUT["nblignes"] = 4
13DEFAUT["nbcolonnes"] = 3 13DEFAUT["nbcolonnes"] = 4
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 16DEFAUT["categories"] = [] # Tout
17 17
18# Score 18# Score
19DEFAUT["score"] = {}
20DEFAUT["score"]["case"] = 1
21DEFAUT["score"]["ligne"] = 10
22DEFAUT["score"]["colonne"] = 10
23DEFAUT["score"]["diagonale"] = 10
24
19 25
20# Configuration 26# Configuration
21 27
diff --git a/data/bingo_data.txt b/data/bingo_data.txt
index 0d25331..a3d142a 100644
--- a/data/bingo_data.txt
+++ b/data/bingo_data.txt
@@ -7,13 +7,17 @@
7"Allaitement","Tu arrêteras quand bébé aura des dents" 7"Allaitement","Tu arrêteras quand bébé aura des dents"
8"Allaitement","Tu ne devrais pas l'endormir au sein" 8"Allaitement","Tu ne devrais pas l'endormir au sein"
9"Allaitement","Encore au sein ?" 9"Allaitement","Encore au sein ?"
10"Allaitement","Tu es une tétine géante.","Non, c'est la tétine qui est un sein miniature !","Je savais que la grossesse m'avait fait grossir, mais à ce point..."
11"Allaitement","L'allaitement, c'est bon pour les mamans et bébés du Tiers-Monde."
10 12
11"Sommeil","Bébé fait (enfin) ses nuits ?","Et toi, tu fais tes nuits ?","Bébé fait SES nuits bien à lui/elle.","Oui.","Non." 13"Sommeil","Bébé fait (enfin) ses nuits ?","Et toi, tu fais tes nuits ?","Bébé fait SES nuits bien à lui/elle.","Oui.","Non."
12"Sommeil","Bébé dort (encore) avec vous ?" 14"Sommeil","Bébé dort (encore) avec vous ?"
13"Sommeil","Laisse bébé pleurer il/elle finira bien par dormir." 15"Sommeil","Laisse bébé pleurer il/elle finira bien par dormir."
14"Sommeil","Il faut lui donner un rythme." 16"Sommeil","Il faut lui donner un rythme."
17"Sommeil","Le bébé de [Untel], il fait ses nuits, lui."
15 18
16"Pleurs","Laisse bébé pleurer, ça lui fera les poumons." 19"Pleurs","Laisse bébé pleurer, ça lui fera les poumons."
20"Pleurs","C'est un caprice, ça !"
17 21
18"Éducation","Il/elle doit apprendre à se détacher de maman." 22"Éducation","Il/elle doit apprendre à se détacher de maman."
19 23
diff --git a/gere_grille.py b/gere_grille.py
index 25ff51c..073a584 100644
--- a/gere_grille.py
+++ b/gere_grille.py
@@ -70,13 +70,15 @@ def genere_grille(config, textes, liste_err):
70 70
71 return grille 71 return grille
72 72
73#######################" Encoder/décoder la grille et la configuration via l'URL ############
74
73def encode_grille(config, grille, liste_err): 75def encode_grille(config, grille, liste_err):
74 """ grille est un tableau double qu'on veut sauvegarder. 76 """ grille est un tableau double qu'on veut sauvegarder.
75 config est la configuration (on va garder le titre avec) 77 config est la configuration (on va garder le titre avec)
76 Renvoie une chaîne de caractères qui encode cette grille 78 Renvoie une chaîne de caractères qui encode cette grille
77 de manière condensée. Renvoie une chaîne cheloue""" 79 de manière condensée. Renvoie une chaîne cheloue"""
78 # Chaîne de caractère 80 # Chaîne de caractère
79 data = {"titre": config["titre"], "grille": grille} 81 data = {"titre": config["titre"], "grille": grille, "score": config["score"].copy()}
80 chaine = json.dumps(data) 82 chaine = json.dumps(data)
81 code = zlib.compress(chaine.encode()) 83 code = zlib.compress(chaine.encode())
82 chaineencodee = str(base64.urlsafe_b64encode(code)) 84 chaineencodee = str(base64.urlsafe_b64encode(code))
@@ -136,6 +138,12 @@ def gere_donnees_custom(data, liste_err):
136 for (key, val) in data.items(): 138 for (key, val) in data.items():
137 if key[0:10] == "categorie_" and val=="on": 139 if key[0:10] == "categorie_" and val=="on":
138 conf["categories"].append(key[10:]) 140 conf["categories"].append(key[10:])
141
142 # Score
143 conf["score"] = {}
144 for cle in DEFAUT["score"]:
145 if "score_"+cle in data:
146 conf["score"][cle] = minimaxi(data.get("score_"+cle, ""), 0, 2**31, DEFAUT["score"][cle], liste_err)
139 147
140 e.debug(str(conf), liste_err) 148 e.debug(str(conf), liste_err)
141 return conf 149 return conf
diff --git a/static/outilspage.js b/static/outilspage.js
index 1ddb713..f0f90b4 100644
--- a/static/outilspage.js
+++ b/static/outilspage.js
@@ -1,9 +1,3 @@
1/* Calcul des scores */
2var points_par_case = 1 ;
3var points_par_ligne = 10 ;
4
5
6
7// Couleurs des cases 1// Couleurs des cases
8var couleur_base = "rgb(238, 238, 238)" ; 2var couleur_base = "rgb(238, 238, 238)" ;
9var couleur_valide = 'rgb(255, 136, 136)' ; 3var couleur_valide = 'rgb(255, 136, 136)' ;
@@ -156,7 +150,7 @@ function detectelignes(elem) {
156 150
157 151
158 // Mettre le score à jour 152 // Mettre le score à jour
159 score = (nb_lignes_completes + nb_colonnes_completes + nb_diagonales_1 + nb_diagonales_2) *points_par_ligne + nbcases ; 153 score = nb_lignes_completes*scoreLigne + nb_colonnes_completes*scoreColonne + (nb_diagonales_1 + nb_diagonales_2) *scoreDiagonale + nbcases*scoreCase ;
160 metscore(score) ; 154 metscore(score) ;
161} 155}
162 156
@@ -204,3 +198,10 @@ function affiche_phrase(elem) {
204 for (var i=0; i<ltemp.length; i++) ltemp[i].style.display = "none" ; 198 for (var i=0; i<ltemp.length; i++) ltemp[i].style.display = "none" ;
205} 199}
206 200
201/* Url à mettre : on ajoute ce qu'il y a là à l'URL actuelle */
202function met_url(aajouter) {
203 let url = new URL(window.location.href) ;
204 url.search = aajouter ;
205 //alert(url) ;
206 history.pushState({}, null, url);
207}
diff --git a/templates/apropos.html b/templates/apropos.html
new file mode 100644
index 0000000..bdf2581
--- /dev/null
+++ b/templates/apropos.html
@@ -0,0 +1,24 @@
1{% extends "base.html" %}
2{% block contenu %}
3<h1>Bingo de l'allaitement (ou autre), infos</h1>
4
5<div id="contenu">
6
7 <h2>C'est quoi ce truc ?</h2>
8
9<p>Parents, vous en avez assez des remarques aussi inutiles que désagréables sur votre façon de vous occuper de vos enfants ? « Mais tu vas l'allaiter jusqu'à quand ? », « Laisse-le pleurer, il finira par s'endormir », « Le bébé de Untel, il fait ses nuits, LUI », etc etc. Vous n'êtes pas seul(e)s :). Et toutes ces remarques vous sont régulièrement servies par la famille, les inconnus, ou même le personnel médical !</p>
10
11<p>Créez votre bingo personnalisé, et emportez-le avec vous la prochaine fois que vous allez voir vos beaux-parents, votre médecin, etc. Cochez les cases adaptées et vous pouvez crier "bingo" quand vous avez une ligne complète, devant le regard médusé de votre interlocuteur. Et voir si vous faites un bon score.</p>
12
13<p>Il/elle ne comprendra pas pourquoi, mais au moins vous aurez un peu rigolé.</p>
14
15 <h2>Ça marche comment ?</h2>
16 <p>Vous pouvez utiliser une grille aléatoire, ou la générer en choisissant certains paramètres. Quand la grille vous plaît, vous pouvez sauvegarder l'URL pour la partager ou la sauvegarder.</p>
17 <p>Une fois la grille chargée, vous pouvez jouer sans connexion.</p>
18
19 <p>Il y a quelques "réponses" possibles si vous cliquez une fois de plus sur les cases, si vous cherchez la réplique qui tue.</p>
20
21</div>
22
23
24{% endblock %}
diff --git a/templates/base.html b/templates/base.html
index 028aaa9..d1b4376 100644
--- a/templates/base.html
+++ b/templates/base.html
@@ -21,7 +21,7 @@
21 <nav> 21 <nav>
22 <a href="/">Grille aléatoire</a> | 22 <a href="/">Grille aléatoire</a> |
23 <a href="/custom">Créer une grille personnalisée</a> | 23 <a href="/custom">Créer une grille personnalisée</a> |
24<!-- <a href="/apropos">À propos</a> |--> 24 <a href="/apropos">À propos</a>
25 25
26 </nav> 26 </nav>
27</div> 27</div>
diff --git a/templates/custom.html b/templates/custom.html
index b3aed77..50858ba 100644
--- a/templates/custom.html
+++ b/templates/custom.html
@@ -36,7 +36,15 @@
36 <li>{{ cat }} <input type="checkbox" name="categorie_{{cat}}" checked> ({{ nbparcat[loop.index -1] }} phrase(s))</li> 36 <li>{{ cat }} <input type="checkbox" name="categorie_{{cat}}" checked> ({{ nbparcat[loop.index -1] }} phrase(s))</li>
37 {% endfor %} 37 {% endfor %}
38 </ul></li> 38 </ul></li>
39
40 <li>Score par : <ul>
41 {% for cle, val in DEFAUT.score.items() %}
42 <li>{{ cle }} : <input class="data" type="number" min="0" name="score_{{ cle }}" value="{{ val }}"></li>
43 {% endfor %}
44 </ul></li>
45
39</ul> 46</ul>
47
40<input type="submit" name="zou" value="Je veux une grille !"> 48<input type="submit" name="zou" value="Je veux une grille !">
41 49
42</form> 50</form>
diff --git a/templates/index.html b/templates/index.html
index af8ac6c..82b556e 100644
--- a/templates/index.html
+++ b/templates/index.html
@@ -1,5 +1,16 @@
1{% extends "base.html" %} 1{% extends "base.html" %}
2{% block contenu %} 2{% block contenu %}
3<script>
4/* Calcul des scores */
5var scoreCase = {{ conf.score.case }};
6var scoreLigne = {{ conf.score.ligne }} ;
7var scoreColonne = {{ conf.score.colonne }} ;
8var scoreDiagonale = {{ conf.score.diagonale }} ;
9
10/*URL */
11met_url('?grille={{ chainecode }}')
12</script>
13
3<h1>{{ conf.titre }}</h1> 14<h1>{{ conf.titre }}</h1>
4 15
5{% if e | length >0 %} 16{% if e | length >0 %}
@@ -44,6 +55,7 @@
44<hr> 55<hr>
45<a href="/?grille={{ chainecode }}">Lien permanent vers cette grille</a> 56<a href="/?grille={{ chainecode }}">Lien permanent vers cette grille</a>
46 57
58
47</div> 59</div>
48 60
49 61