mirror of
https://gitlab.crans.org/bde/nk20
synced 2025-09-01 01:15:23 +02:00
Merge branch 'wei' into 'main'
New informative questions See merge request bde/nk20!350
This commit is contained in:
@@ -17,7 +17,7 @@ from ...models import WEIMembership, Bus
|
||||
|
||||
WORDS = {
|
||||
'list': [
|
||||
'Fiesta', 'Graillance', 'Move it move it', 'Calme', 'Nert et geek', 'Jeux de rôles et danse rock',
|
||||
'Fiesta', 'Graillance', 'Move it move it', 'Calme', 'Nerd et geek', 'Jeux de rôles et danse rock',
|
||||
'Strass et paillettes', 'Spectaculaire', 'Splendide', 'Flow inégalable', 'Rap', 'Battles légendaires',
|
||||
'Techno', 'Alcool', 'Kiffeur·euse', 'Rugby', 'Médiéval', 'Festif',
|
||||
'Stylé', 'Chipie', 'Rétro', 'Vache', 'Farfadet', 'Fanfare',
|
||||
@@ -57,7 +57,7 @@ WORDS = {
|
||||
42: "Un burgouzz de valouzz",
|
||||
47: "Un ocarina (pour me téléporter hors de ce bourbier)",
|
||||
48: "Des paillettes, un micro de karaoké et une enceinte bluetooth",
|
||||
45: "",
|
||||
45: "Un kebab",
|
||||
44: "Une 86 et un caisson pour taper du pied",
|
||||
46: "Une épée, un ballon et une tireuse",
|
||||
43: "Des lunettes de soleil",
|
||||
@@ -176,7 +176,33 @@ WORDS = {
|
||||
49: "Soirée raclette !"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
'stats': [
|
||||
{
|
||||
"question": """Le WEI est structuré par bus, et au sein de chaque bus, par équipes.
|
||||
Pour toi, être dans une équipe où tout le monde reste sobre (primo-entrants comme encadrants) c'est :""",
|
||||
"answers": [
|
||||
(1, "Inenvisageable"),
|
||||
(2, "À contre cœur"),
|
||||
(3, "Pourquoi pas"),
|
||||
(4, "Souhaitable"),
|
||||
(5, "Nécessaire"),
|
||||
],
|
||||
"help_text": "(De toute façon aucun alcool n'est consommé pendant les trajets du bus, ni aller, ni retour.)",
|
||||
},
|
||||
{
|
||||
"question": "Faire partie d'un bus qui n'apporte pas de boisson alcoolisée pour ses membres, pour toi c'est :",
|
||||
"answers": [
|
||||
(1, "Inenvisageable"),
|
||||
(2, "À contre cœur"),
|
||||
(3, "Pourquoi pas"),
|
||||
(4, "Souhaitable"),
|
||||
(5, "Nécessaire"),
|
||||
],
|
||||
"help_text": """(Tout les bus apportent de l'alcool cette année, cette question sert à l'organisation pour l'année prochaine.
|
||||
De plus il y aura de toute façon de l'alcool commun au WEI et aucun alcool n'est consommé pendant les trajets en bus.)""",
|
||||
},
|
||||
]
|
||||
}
|
||||
|
||||
IMAGES = {
|
||||
@@ -235,7 +261,7 @@ class WEISurveyForm2025(forms.Form):
|
||||
all_preferred_words = WORDS['list']
|
||||
rng.shuffle(all_preferred_words)
|
||||
self.fields["words"].choices = [(w, w) for w in all_preferred_words]
|
||||
else:
|
||||
elif information.step <= len(WORDS['questions']):
|
||||
questions = list(WORDS['questions'].items())
|
||||
idx = information.step - 1
|
||||
if idx < len(questions):
|
||||
@@ -251,6 +277,15 @@ class WEISurveyForm2025(forms.Form):
|
||||
widget=OptionalImageRadioSelect(images=IMAGES.get(q, {})),
|
||||
required=True,
|
||||
)
|
||||
elif information.step == len(WORDS['questions']) + 1:
|
||||
for i, v in enumerate(WORDS['stats']):
|
||||
self.fields[f'stat_{i}'] = forms.ChoiceField(
|
||||
label=v['question'],
|
||||
choices=v['answers'],
|
||||
widget=forms.RadioSelect(),
|
||||
required=False,
|
||||
help_text=_(v.get('help_text', ''))
|
||||
)
|
||||
|
||||
def clean_words(self):
|
||||
data = self.cleaned_data['words']
|
||||
@@ -377,7 +412,7 @@ class WEISurvey2025(WEISurvey):
|
||||
setattr(self.information, "word" + str(i), word)
|
||||
self.information.step += 1
|
||||
self.save()
|
||||
else:
|
||||
elif 1 <= self.information.step <= len(WORDS['questions']):
|
||||
questions = list(WORDS['questions'].keys())
|
||||
idx = self.information.step - 1
|
||||
if idx < len(questions):
|
||||
@@ -385,6 +420,13 @@ class WEISurvey2025(WEISurvey):
|
||||
setattr(self.information, q, form.cleaned_data[q])
|
||||
self.information.step += 1
|
||||
self.save()
|
||||
else:
|
||||
for i, __ in enumerate(WORDS['stats']):
|
||||
ans = form.cleaned_data.get(f'stat_{i}')
|
||||
if ans is not None:
|
||||
setattr(self.information, f'stat_{i}', ans)
|
||||
self.information.step += 1
|
||||
self.save()
|
||||
|
||||
@classmethod
|
||||
def get_algorithm_class(cls):
|
||||
@@ -394,7 +436,7 @@ class WEISurvey2025(WEISurvey):
|
||||
"""
|
||||
The survey is complete once the bus is chosen.
|
||||
"""
|
||||
return self.information.step > len(WORDS['questions'])
|
||||
return self.information.step > len(WORDS['questions']) + 1
|
||||
|
||||
@classmethod
|
||||
@lru_cache()
|
||||
|
BIN
apps/wei/static/wei/img/logo_auvergne_rhone_alpes.jpg
Normal file
BIN
apps/wei/static/wei/img/logo_auvergne_rhone_alpes.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 34 KiB |
@@ -53,9 +53,11 @@ class TestWEIAlgorithm(TestCase):
|
||||
birth_date='2000-01-01',
|
||||
)
|
||||
information = WEISurveyInformation2025(registration)
|
||||
for j in range(1, 21):
|
||||
for j in range(1, 1 + NB_WORDS):
|
||||
setattr(information, f'word{j}', random.choice(WORDS['list']))
|
||||
information.step = 20
|
||||
for q in WORDS['questions']:
|
||||
setattr(information, q, random.choice(list(WORDS['questions'][q][1].keys())))
|
||||
information.step = len(WORDS['questions']) + 2
|
||||
information.save(registration)
|
||||
registration.save()
|
||||
|
||||
@@ -87,7 +89,7 @@ class TestWEIAlgorithm(TestCase):
|
||||
setattr(information, f'word{j}', random.choice(WORDS['list']))
|
||||
for q in WORDS['questions']:
|
||||
setattr(information, q, random.choice(list(WORDS['questions'][q][1].keys())))
|
||||
information.step = len(WORDS['questions']) + 1
|
||||
information.step = len(WORDS['questions']) + 2
|
||||
information.save(registration)
|
||||
registration.save()
|
||||
survey = WEISurvey2025(registration)
|
||||
|
Reference in New Issue
Block a user