working html for survey + fixed json error + added specific diet text field

This commit is contained in:
mcngnt 2024-08-29 00:05:44 +02:00
parent 946674f59b
commit 96539d262f
6 changed files with 61 additions and 9 deletions

View File

@ -1,9 +1,12 @@
# Copyright (C) 2018-2024 by BDE ENS Paris-Saclay # Copyright (C) 2018-2024 by BDE ENS Paris-Saclay
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
import json
from functools import lru_cache from functools import lru_cache
from django import forms from django import forms
from django.utils.safestring import mark_safe
from django.db import transaction from django.db import transaction
from django.db.models import Q from django.db.models import Q
@ -13,7 +16,7 @@ from ...models import WEIMembership
buses_descr = [ buses_descr = [
[ [
"Magi[Kar]p", "#ef5568", 0, "Magi[Kar]p 🐙🎮🎲", "#ef5568", 1,
"""Vous l'aurez compris au nom du bus, l'ambiance est aux jeux et à la culture geek ! Ici, vous trouverez une ambiance """Vous l'aurez compris au nom du bus, l'ambiance est aux jeux et à la culture geek ! Ici, vous trouverez une ambiance
calme avec une bonne dose d'autodérision et de second degré. Que vous ayez besoin de beaucoup dormir pour tenir la soirée calme avec une bonne dose d'autodérision et de second degré. Que vous ayez besoin de beaucoup dormir pour tenir la soirée
du lendemain, ou que vous souhaitiez faire nuit blanche pour jouer toute la nuit, vous pouvez nous rejoindre. Votre voix du lendemain, ou que vous souhaitiez faire nuit blanche pour jouer toute la nuit, vous pouvez nous rejoindre. Votre voix
@ -21,13 +24,13 @@ buses_descr = [
siphonner !""", siphonner !""",
], ],
[ [
"Va[car]me", "#fd7a28", 0, "Va[car]me 🎷🍎🔊", "#fd7a28", 3,
"""Ici c'est le bus du bruit. Que ce soit les groupes de musique du Bureau des Arts ou la fanfare, on sera là pour vous """Ici c'est le bus du bruit. Que ce soit les groupes de musique du Bureau des Arts ou la fanfare, on sera là pour vous
ambiancer ! On fera en sorte que vous vous souveniez de votre WEI et de son Vacarme !""", ambiancer ! On fera en sorte que vous vous souveniez de votre WEI et de son Vacarme !""",
], ],
[ [
"[Kar]aïbes", "#a5cfdd", 0, "[Kar]aïbes", "#a5cfdd", 0,
"""Bus dans le thème des Caraïbes … 🐬🏴‍☠️🐬""", """Ahoy, explorateurs du WEI ! Le bus Karaibes tinvite à une traversée sous les tropiques, où lambiance est toujours au beau fixe ! ☀️🍹 Ici, cest soleil, rhum, et bonne humeur assurée : une atmosphère de vacances où lon se laisse porter par la chaleur humaine et la fête. Que tu sois un pirate en quête de sensations fortes ou un amateur de chill avec un cocktail à la main, tu seras à ta place dans notre bus. Les soirées seront marquées par des rythmes tropicaux qui te feront vibrer jusquà laube. Prêt à embarquer pour une aventure inoubliable avec les meilleurs matelots du WEI ? On tattend sur le pont du Karaibes pour lever lancre ensemble !""",
], ],
[ [
"[Kar]di [Bus]", "#e46398", 0, "[Kar]di [Bus]", "#e46398", 0,
@ -39,19 +42,19 @@ buses_descr = [
Bus !""", Bus !""",
], ],
[ [
"Sparta[bus] 🏉", "#ebdac2", 0, "Sparta[bus] 🐺🐒🏉", "#ebdac2", 0,
"""Dans notre bus, on vous donne un avant goût des plus grandes assos de l'ENS : les Kyottes et l'Aspique (clubs de rugby """Dans notre bus, on vous donne un avant goût des plus grandes assos de l'ENS : les Kyottes et l'Aspique (clubs de rugby
féminin et masculin, mais pas que). Bien entendu, qui dit rugby dit les copaings, le pastaga et la Pena Bayona, mais vous féminin et masculin, mais pas que). Bien entendu, qui dit rugby dit les copaings, le pastaga et la Pena Bayona, mais vous
verrez par vous même qu'on est ouvert⋅e à toutes propositions quand il s'agit de faire la fête. Pour les casse-cous comme verrez par vous même qu'on est ouvert⋅e à toutes propositions quand il s'agit de faire la fête. Pour les casse-cous comme
pour les plus calmes, vous trouverez au bus Aspique-Kyottes les 2A+ qui vous feront kiffer votre WEI.""", pour les plus calmes, vous trouverez au bus Aspique-Kyottes les 2A+ qui vous feront kiffer votre WEI.""",
], ],
[ [
"Zanzo[Bus]", "#FFFF", 0, "Zanzo[Bus] 🤩👽🐔", "#FFFF", 3,
"""Dans un entre-trois bien senti entre zinzinerie, enfance et vieillerie, le Zanzo[BUS] est un concentré de fun mêlé à """Dans un entre-trois bien senti entre zinzinerie, enfance et vieillerie, le Zanzo[BUS] est un concentré de fun mêlé à
de la dinguerie à gogo. N'hésitez plus et rejoignez-nous pour un WEI toujours plus déjanté !""", de la dinguerie à gogo. N'hésitez plus et rejoignez-nous pour un WEI toujours plus déjanté !""",
], ],
[ [
"Bran[Kar] 🥳", "#6da1ac", 3.5, "Bran[Kar] 🍹🥳", "#6da1ac", 4,
"""Si vous ne connaissez pas le Bran[Kar], cest comme une grande famille qui fait un apéro, qui se bourre un peu la """Si vous ne connaissez pas le Bran[Kar], cest comme une grande famille qui fait un apéro, qui se bourre un peu la
gueule en discutant des heures autour dune table remplie de bouffe et de super bons cocktails (la plupart des gueule en discutant des heures autour dune table remplie de bouffe et de super bons cocktails (la plupart des
barmen/barwomen du bus sont les barmans de Shakens), sauf quon est un bus du Wei (vous comprendrez bien le nom de notre barmen/barwomen du bus sont les barmans de Shakens), sauf quon est un bus du Wei (vous comprendrez bien le nom de notre
@ -79,12 +82,30 @@ buses_descr = [
] ]
def print_survey_info(i):
s = {"recap": {
"1": 0,
}}
s_ = {f"bus{i}": {f"{i}": 0 for i in range(1, 5 + 1)} for i in range(len(buses_descr))}
s.update(s_)
s.update({f"bus{i}": {f"{join}": join for join in range(1, 5 + 1)}})
s = {"scores": s}
json_str = json.dumps(s)
print(json_str)
def print_bus(i): def print_bus(i):
return f"""<h1 style="color:{buses_descr[i][1]};-webkit-text-stroke: 2px black;font-size: 50px;">{buses_descr[i][0]}</h1><br> return f"""<h1 style="color:{buses_descr[i][1]};-webkit-text-stroke: 2px black;font-size: 50px;">{buses_descr[i][0]}</h1><br>
<b>Alcoolomètre : {buses_descr[i][2]} / 5 🍻</b><br><br>{buses_descr[i][3]}<br>""" <b>Alcoolomètre : {buses_descr[i][2]} / 5 🍻</b><br><br>{buses_descr[i][3]}<br>"""
def print_all_buses(): def print_all_buses():
# for i in range(len(buses_descr)):
# print_survey_info(i)
liste = [print_bus(i) for i in range(len(buses_descr))] liste = [print_bus(i) for i in range(len(buses_descr))]
return "<br><br><br><br>".join(liste) return "<br><br><br><br>".join(liste)
@ -129,7 +150,7 @@ WORDS.update({
class WEISurveyForm2024(forms.Form): class WEISurveyForm2024(forms.Form):
""" """
Survey form for the year 2024. Survey form for the year 2024.
Members answer 10 questions, from which we calculate the best associated bus. Members score the different buses, from which we calculate the best associated bus.
""" """
def set_registration(self, registration): def set_registration(self, registration):
""" """
@ -139,7 +160,7 @@ class WEISurveyForm2024(forms.Form):
question = information.questions[information.step] question = information.questions[information.step]
self.fields[question] = forms.ChoiceField( self.fields[question] = forms.ChoiceField(
label=WORDS[question][0], label=mark_safe(WORDS[question][0]),
widget=forms.RadioSelect(), widget=forms.RadioSelect(),
) )
answers = [(answer, WORDS[question][1][answer]) for answer in WORDS[question][1]] answers = [(answer, WORDS[question][1][answer]) for answer in WORDS[question][1]]
@ -224,6 +245,7 @@ class WEISurvey2024(WEISurvey):
raise ValueError("Survey is not ended, can't calculate score") raise ValueError("Survey is not ended, can't calculate score")
bus_info = self.get_algorithm_class().get_bus_information(bus) bus_info = self.get_algorithm_class().get_bus_information(bus)
print(bus_info)
# Score is the given score by the bus subtracted to the mid-score of the buses. # Score is the given score by the bus subtracted to the mid-score of the buses.
s = 0 s = 0
for question in WORDS: for question in WORDS:

View File

@ -0,0 +1,18 @@
# Generated by Django 4.2.15 on 2024-08-28 20:47
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('wei', '0008_auto_20240111_1545'),
]
operations = [
migrations.AddField(
model_name='weiregistration',
name='specific_diet',
field=models.TextField(blank=True, default='', verbose_name='specific diet'),
),
]

View File

@ -232,6 +232,12 @@ class WEIRegistration(models.Model):
verbose_name=_("health issues"), verbose_name=_("health issues"),
) )
specific_diet = models.TextField(
blank=True,
default="",
verbose_name=_("specific diet"),
)
emergency_contact_name = models.CharField( emergency_contact_name = models.CharField(
max_length=255, max_length=255,
verbose_name=_("emergency contact name"), verbose_name=_("emergency contact name"),

View File

@ -12,7 +12,7 @@
<div class="card-body"> <div class="card-body">
{% render_table bus_repartition_table %} {% render_table bus_repartition_table %}
<hr> <hr>
<a href="{% url 'wei:wei_bus_1A_next' pk=club.pk %}" class="btn btn-block btn-success">{% trans "Start attribution!" %}</a> <a href="{% url 'wei:wei_bus_1A_next' pk=club.pk %}" class="btn btn-block btn-success">{% trans "Start attribution !" %}</a>
<hr> <hr>
{% render_table table %} {% render_table table %}
</div> </div>

View File

@ -28,6 +28,9 @@
<dt class="col-xl-6">{% trans 'health issues'|capfirst %}</dt> <dt class="col-xl-6">{% trans 'health issues'|capfirst %}</dt>
<dd class="col-xl-6">{{ object.health_issues|default:"—" }}</dd> <dd class="col-xl-6">{{ object.health_issues|default:"—" }}</dd>
<dt class="col-xl-6">{% trans 'specific diet'|capfirst %}</dt>
<dd class="col-xl-6">{{ object.specific_diet|default:"—" }}</dd>
<dt class="col-xl-6">{% trans 'suggested bus'|capfirst %}</dt> <dt class="col-xl-6">{% trans 'suggested bus'|capfirst %}</dt>
<dd class="col-xl-6">{{ survey.information.selected_bus_name }}</dd> <dd class="col-xl-6">{{ survey.information.selected_bus_name }}</dd>
</dl> </dl>

View File

@ -67,6 +67,9 @@ SPDX-License-Identifier: GPL-3.0-or-later
<dt class="col-xl-6">{% trans 'health issues'|capfirst %}</dt> <dt class="col-xl-6">{% trans 'health issues'|capfirst %}</dt>
<dd class="col-xl-6">{{ registration.health_issues }}</dd> <dd class="col-xl-6">{{ registration.health_issues }}</dd>
<dt class="col-xl-6">{% trans 'specific diet'|capfirst %}</dt>
<dd class="col-xl-6">{{ registration.specific_diet }}</dd>
<dt class="col-xl-6">{% trans 'emergency contact name'|capfirst %}</dt> <dt class="col-xl-6">{% trans 'emergency contact name'|capfirst %}</dt>
<dd class="col-xl-6">{{ registration.emergency_contact_name }}</dd> <dd class="col-xl-6">{{ registration.emergency_contact_name }}</dd>