Commit 8e68fea5 authored by Hamza Dely's avatar Hamza Dely

[WEI] Nouvelle application WEI (Frontend)

parent 8292122c
......@@ -421,3 +421,56 @@ class TransfertForm(MoneyForm):
class DeleteCompteForm(forms.Form):
"""Formulaire de confirmation de suppression de compte."""
anonymiser = forms.BooleanField(label="Anonymiser le compte (nom, prénom, mail, adresse, …)", required=False)
DEPTS = (
('A0', 'Informatique (A0)'),
('A1', 'Mathématiques (A1)'),
('A2', 'Physique (A2)'),
('A\'2', 'Physique Appliquée (A\'2)'),
('A"2', 'Chimie (A"2)'),
('A3', 'Biologie (A3)'),
('B1234', 'SAPHIRE (B1234)'),
('B1', 'Mécanique (B1)'),
('B2', 'Génie Civil (B2)'),
('B3', 'Génie Mécanique (B3)'),
('B4', 'EEA (B4)'),
('C', 'Design (C)'),
('D1', 'Troll (D1)'),
('D2', 'Eco-Gestion (D2)'),
('D3', 'Sciences sociales (D3)'),
('E', 'Anglais (E)'),
('EXT', 'Autre (EXT)'),
)
MODES_PAIEMENTS = (
('note', 'Note'),
('soge', 'Société Générale'),
('virement', 'Virement Bancaire (sous conditions)'),
)
ROLES = (
('libre', 'Electron libre'),
('chef_equipe', 'Chef d\'équipe (3A+)'),
('chef_bus', 'Chef de bus (2A sobre)'),
('inconnu', 'Je ne sais pas'),
)
class WEIVieuxForm(forms.Form):
"""
Questionnaire WEI pour les 2A+
"""
nom = forms.CharField(max_length=255, required=True, label="Nom")
prenom = forms.CharField(max_length=255, required=True, label="Prénom")
tel = forms.CharField(max_length=10, required=True, label="Téléphone")
urgence_nom = forms.CharField(max_length=255, required=True, label="Nom de la personne à contacter en cas d'urgence")
urgence_tel = forms.CharField(max_length=10, required=True, label="Téléphone de la personne à contacter en cas d'urgence")
mail = forms.EmailField(max_length=254, required=True, label="Email")
annee = forms.IntegerField(min_value=0, required=True, label="Annee")
dept = forms.ChoiceField(choices=DEPTS, required=True, label="Département d'enseignement")
paiement = forms.ChoiceField(choices=MODES_PAIEMENTS, required=True, label="Mode de paiement")
normalien = forms.BooleanField(required=False, initial=False, label="Je perçois une rémunération (normalien, prof, ...)")
pseudo = forms.CharField(max_length=255, required=True, label="Nom de note")
pbsante = forms.CharField(widget=forms.Textarea, required=False, label="Informations pour le staff WEI (allergies/intolérances, végétarien, problèmes de santé, ...)")
bus = forms.CharField(max_length=255, initial='Je ne sais pas', required=False, label="Bus demandé")
role = forms.MultipleChoiceField(choices=ROLES, initial='inconnu', required=True, label="Je voudrais faire mon WEI en tant que", widget=forms.CheckboxSelectMultiple)
......@@ -47,6 +47,12 @@ urlpatterns = patterns('note.views',
url(ur'^/preinscriptions?/*$', 'preinscriptions'),
# les inscriptions
url(ur'^/inscriptions?(?:/(?P<preid>[^/]*))?(?P<delete>/delete)?/*$', 'inscriptions'),
# Application WEI
url(ur'^/wei/*$', 'WEIaccueil'),
url(ur'^/wei/monInscription/*$', 'WEImonInscription'),
url(ur'^/wei/1a/*$', 'WEI1A'),
url(ur'^/wei/vieux/*$', 'WEIvieux'),
url(ur'^/wei/inscrits/*$', 'WEIinscrits'),
# regeneration du password
url(ur'^/regen_pw/(?P<token>[^/]*)/*$', 'regen_pw'),
# easter egg
......
......@@ -494,6 +494,126 @@ def standard_page_withignores(ignore_casts=[]):
return _decorated
return real_decorator
###############################################################################
### Fonctions utilitaires pour l'application WEI ###
###############################################################################
def _get_dept_code(dept):
"""
Fonction transformant une chaine de caractères désignant un département
d'enseignement en code, par exemple "Physique" -> "A2".
Renvoie 'EXT' si le département est inconnu.
"""
if dept.lower() in [
'info',
'informatique',
'a0',
]:
code = 'A0'
elif dept.lower() in [
'math',
'maths',
'mathématiques',
'mathematiques',
]:
code = 'A1'
elif dept.lower() in [
'physique',
'phys',
'a2',
]:
code = 'A2'
elif dept.lower() in [
'phys. appliquée',
'physique appliquée',
'phys. appliquee',
'physique appliquee',
'phys appliquée',
'phys appliquee',
]:
code = 'A\'2'
elif dept.lower() in [
'chimie',
'a"2',
]:
code = 'A"2'
elif dept.lower() in [
'bio',
'biologie',
'a3',
]:
code = 'A3'
elif dept.lower() in [
'saphire',
'b123',
'b1234',
]:
code = 'B1234'
elif dept.lower() in [
'méca',
'mécanique',
'meca',
'mecanique',
'b1'
]:
code = 'B1'
elif dept.lower() in [
'génie civil',
'genie civil',
'b2',
]:
code = 'B2'
elif dept.lower() in [
'génie mécanique',
'genie mecanique',
'génie mecanique',
'genie mécanique',
'genie méca',
'génie méca',
'genie meca',
'genie méca',
'b3',
]:
code = 'B3'
elif dept.lower() in [
'eea',
'electronique',
'genie electrique',
'génie éléctrique',
'b4',
]:
code = 'B4'
elif dept.lower() in [
'design',
'c',
]:
code = 'C'
elif dept.lower() in [
'eco-gestion',
'ecogestion',
'eco',
'gestion',
'd2',
]:
code = 'D2'
elif dept.lower() in [
'sciences sociales',
'socio',
'd3',
]:
code = 'D3'
elif dept.lower() in [
'anglais',
'anglaise',
'e',
]:
code = 'E'
else:
code = 'EXT'
return code
#: Comme :py:meth:`standard_page_withignores` mais, justement sans ignores, parce que la plupart des pages n'en ont pas besoin.
#: (C'est en fait le résultat de ``standard_page_withignores([])``
standard_page = standard_page_withignores()
......@@ -1046,6 +1046,189 @@ def inscriptions(request, sock, kwargs):
variables["liste_preinscriptions"] = liste_preinscriptions
return (variables, "note/inscriptions.html")
@standard_page
def WEIaccueil(request, sock, kwargs):
"""
Page d'accueil pour les inscriptions au WEI 2015.
"""
variables = {}
sock.write(json.dumps(["wei_main", ]))
out = nk.full_read(sock)
if out["retcode"] != 0:
messages.add_error(request, out["errmsg"])
variables["haswei"] = out["msg"]["haswei"]
variables["preinscriptions"] = out["msg"]["preinscriptions"]
variables["inscriptions"] = out["msg"]["inscriptions"]
variables["myself"] = out["msg"]["myself"]
return (variables, "note/wei_accueil.html")
@standard_page
def WEIinscrits(request, sock, kwargs):
"""
Liste des inscrits au WEI
"""
variables = {}
sock.write(json.dumps(["wei_main", ]))
out = nk.full_read(sock)
haswei = out["msg"]["haswei"]
variables["haswei"] = haswei
variables["preinscriptions"] = out["msg"]["preinscriptions"]
variables["inscriptions"] = out["msg"]["inscriptions"]
variables["myself"] = out["msg"]["inscriptions"]
if not haswei:
messages.add_error(request, "Vous ne pouvez pas accéder à la liste des inscrits/préinscrits !")
else:
sock.write(json.dumps(["wei_get_listes", ]))
out = nk.full_read(sock)
if out["retcode"] != 0:
messages.add_error(request, "Impossible de récupérer les listes")
variables["show_liste"] = True
variables["liste_pre"] = out["msg"]["liste_pre"]
variables["liste_insc"] = out["msg"]["liste_insc"]
return (variables, "note/wei_inscrits.html")
@standard_page
def WEImonInscription(request, sock, kwargs):
"""
Page d'informations sur l'inscription de l'utilisateur.
"""
variables = {}
compte = kwargs["variables_standard"]["whoami"]
variables["compte"] = compte
sock.write(json.dumps(["wei_main", ]))
out = nk.full_read(sock)
myself = out["msg"]["myself"]
variables["haswei"] = out["msg"]["haswei"]
variables["inscriptions"] = out["msg"]["inscriptions"]
variables["preinscriptions"] = out["msg"]["preinscriptions"]
variables["myself"] = myself
if not myself:
message.add_error(request, "Ce compte n'a pas la possibilité de s'inscrire au WEI")
return HttpResponseRedirect("%swei/" % settings.NOTE_ROOT_URL)
sock.write(json.dumps(["wei_search", [{ 'idbde' : compte["idbde"], 'champs' : {'test' : 'test' } }, ] ]))
out = nk.full_read(sock)
done = out["msg"]["done"]
variables["done"] = done
if not done:
if request.method == 'GET':
dept = utilities._get_dept_code(compte["section"])
compte["dept"] = dept
form = forms.WEIVieuxForm(initial=compte)
elif request.method == 'POST':
form = forms.WEIVieuxForm(request.POST)
if form.is_valid():
sock.write(json.dumps(["wei_compute_form", ["vieux", form.cleaned_data, ], ]))
out = nk.full_read(sock)
if out["retcode"] != 0:
messages.add_error(request, out["errmsg"])
variables["succes"] = False
else:
variables["succes"] = True
return (variables, "note/wei_succes.html")
else:
messages.add_error(request, "Requête non supportée : %s" % request.method)
return HttpResponseRedirect("%swei/monInscription" % settings.NOTE_ROOT_URL)
variables["form"] = form
return (variables, "note/wei_monInscription.html")
@standard_page
def WEI1A(request, sock, kwargs):
"""
Formulaire WEI pour les 1A
"""
variables = {}
sock.write(json.dumps(["wei_main", ]))
out = nk.full_read(sock)
preinscriptions = out["msg"]["preinscriptions"]
variables["myself"] = out["msg"]["myself"]
variables["preinscriptions"] = preinscriptions
variables["inscriptions"] = out["msg"]["inscriptions"]
variables["haswei"] = out["msg"]["haswei"]
if not preinscriptions:
messages.add_error(request, "Tu ne peux pas effectuer de préinscriptions.")
return HttpResponseRedirect("%wei/" % settings.NOTE_ROOT_URL)
else:
if request.method == "GET":
variables["form"] = None
variables["type"] = '1a'
elif request.method == "POST":
# TODO : Formulaire 1A a ajouter
pass
else:
messages.add_error(request, "Requête inattendue : %s" % request.method)
return HttpResponseRedirect("%swei/1a/" % settings.NOTE_ROOT_URL)
return (variables, "note/wei_1a.html")
@standard_page
def WEIvieux(request, sock, kwargs):
"""
Affiche le formulaire WEI pour les vieux.
"""
variables = {}
compte = kwargs["variables_standard"]["whoami"]
variables["comptes"] = compte
sock.write(json.dumps(["wei_main", ]))
out = nk.full_read(sock)
if out["retcode"] != 0:
message.add_error(request, "Erreur lors de la récupération des données de wei_main")
else:
variables["haswei"] = out["msg"]["haswei"]
variables["inscriptions"] = out["msg"]["inscriptions"]
variables["preinscriptions"] = out["msg"]["preinscriptions"]
variables["myself"] = out["msg"]["myself"]
if request.method == "GET":
variables["form"] = forms.WEIVieuxForm()
variables["type"] = 'vieux'
elif request.method == "POST":
form = forms.WEIVieuxForm(request.POST)
if form.is_valid():
sock.write(json.dumps(["wei_vieux", [ { "mode" : "compute_form", "form" : form.cleaned_data, }, ], ]))
out = nk.full_read(sock)
variables["succes"] = True
# TODO : Vérifier le code retour ici
return (variables, "note/wei_succes.html")
else:
variables["form"] = form
variables["type"] = 'vieux'
else:
return HttpResponseRedirect("%swei/" % settings.NOTE_ROOT_URL)
return (variables, "note/wei_vieux.html")
def teapot(request):
"""Easter egg"""
page = """<html><head>\n<title>418 I'm a Teapot</title>\n</head><body>\n<h1>HTCPCP error 418: I'm a Teapot</h1>\nThe requested URL cannot provide coffe, because this is a networked teapot. See RFC2324.<p>\n<hr>\n"""
......
{% extends "note/base.html" %}
{% block title %}Inscription{% endblock %}
{% block mainstyle %}main_style{% endblock %}
{% block content %}
<div class="tabbable">
<div class="labels">
<ul id="tab-labels">
<li><h5><a href="{{ NOTE_ROOT_URL }}wei/" class="default">Consignes d'inscription</a></h5></li>
{% if haswei %}
<li><h5><a href="{{ NOTE_ROOT_URL }}wei/inscrits/" class="default">Liste des inscrits</a></h5></li>
{% endif %}
{% if myself %}
<li><h5><a href="{{ NOTE_ROOT_URL }}wei/monInscription/" class="default">Mon inscription au WEI</a></h5></li>
{% endif %}
{% if preinscriptions %}
<li><h5><a href="{{ NOTE_ROOT_URL }}wei/1a/" class="default active">Inscription 1A</a></h5></li>
{% endif %}
{% if inscriptions %}
<li><h5><a href="{{ NOTE_ROOT_URL }}wei/vieux/" class="default">Inscription 2A+</a></h5></li>
{% endif %}
</ul>
</div>
<div id="tab-panels">
<h1>High[WEI] To Hell</h1>
<br/>
<h1>Inscription 1A WEI 2015</h1>
<br/>
{% if preinscriptions and form %}
<form method="post" action="" class="form-horizontal">{% csrf_token %}
{% include "note/form_contents.html" %}
</form>
{% elif preinscriptions %}
<h3>Le formulaire 1A sera bientôt disponible</h3>
{% else %}
<h3>Vous n'avez pas accès à cette page</h3>
{% endif %}
</div>
</div>
{% endblock %}
{% extends "note/base.html" %}
{% block title %}Inscription{% endblock %}
{% block mainstyle %}main_style{% endblock %}
{% block content %}
<div class="tabbable">
<div class="labels">
<ul id="tab-labels">
<li><h5><a href="{{ NOTE_ROOT_URL }}wei/" class="default active">Consignes d'inscription</a></h5></li>
{% if haswei %}
<li><h5><a href="{{ NOTE_ROOT_URL }}wei/inscrits/" class="default">Liste des inscrits</a></h5></li>
{% endif %}
{% if myself %}
<li><h5><a href="{{ NOTE_ROOT_URL }}wei/monInscription/" class="default">Mon inscription au WEI</a></h5></li>
{% endif %}
{% if preinscriptions %}
<li><h5><a href="{{ NOTE_ROOT_URL }}wei/1a/" class="default">Inscription 1A</a></h5></li>
{% endif %}
{% if inscriptions %}
<li><h5><a href="{{ NOTE_ROOT_URL }}wei/vieux/" class="default">Inscription 2A+</a></h5></li>
{% endif %}
</ul>
</div>
<div id="tab-panels">
<h1>High[WEI] To Hell</h1>
<br/>
<h1>Gestion des inscriptions WEI</h1>
<br/>
<h2>Consignes générales</h2>
<br/>
<p>Mettre les consignes générales pour le WEI ici</p>
</div>
</div>
{% endblock %}
{% extends "note/base.html" %}
{% block title %}Inscription{% endblock %}
{% block mainstyle %}main_style{% endblock %}
{% block content %}
<div class="tabbable">
<div class="labels">
<ul id="tab-labels">
<li><h5><a href="{{ NOTE_ROOT_URL }}wei/" class="default">Consignes d'inscription</a></h5></li>
{% if haswei %}
<li><h5><a href="{{ NOTE_ROOT_URL }}wei/inscrits/" class="default active">Liste des inscrits</a></h5></li>
{% endif %}
{% if myself %}
<li><h5><a href="{{ NOTE_ROOT_URL }}wei/monInscription/" class="default">Mon inscription au WEI</a></h5></li>
{% endif %}
{% if preinscriptions %}
<li><h5><a href="{{ NOTE_ROOT_URL }}wei/1a/" class="default">Inscription 1A</a></h5></li>
{% endif %}
{% if inscriptions %}
<li><h5><a href="{{ NOTE_ROOT_URL }}wei/vieux/" class="default">Inscription 2A+</a></h5></li>
{% endif %}
</ul>
</div>
<div id="tab-panels">
<h1>High[WEI] To Hell</h1>
<br/>
{% if haswei %}
<h2>Liste des préinscrits au WEI</h2>
{% for entry in liste_preinscrits %}
{% empty %}
<br/>
<h4>Aucune préinscription n'est enregistrée</h4>
<br/>
{% endfor %}
<h2>Liste des inscrits au WEI</h2>
{% for entry in list_preinscrits %}
{% empty %}
<br/>
<h4>Aucune inscription n'est enregistrée</h4>
<br/>
{% endfor %}
{% else %}
<h3>Vous n'avez pas accès à cette page</h3>
<br/>
{% endif %}
</div>
</div>
{% endblock %}
{% extends "note/base.html" %}
{% block title %}Inscription{% endblock %}
{% block mainstyle %}main_style{% endblock %}
{% block content %}
<div class="tabbable">
<div class="labels">
<ul id="tab-labels">
<li><h5><a href="{{ NOTE_ROOT_URL }}wei/" class="default">Consignes d'inscription</a></h5></li>
{% if haswei %}
<li><h5><a href="{{ NOTE_ROOT_URL }}wei/inscrits/" class="default">Liste des inscrits</a></h5></li>
{% endif %}
{% if myself %}
<li><h5><a href="{{ NOTE_ROOT_URL }}wei/monInscription/" class="default active">Mon inscription au WEI</a></h5></li>
{% endif %}
{% if preinscriptions %}
<li><h5><a href="{{ NOTE_ROOT_URL }}wei/1a/" class="default">Inscription 1A</a></h5></li>
{% endif %}
{% if inscriptions %}
<li><h5><a href="{{ NOTE_ROOT_URL }}wei/vieux/" class="default">Inscription 2A+</a></h5></li>
{% endif %}
</ul>
</div>
<div id="tab-panels">
<h1>High[WEI] To Hell</h1>
<br/>
<h1>Mon inscription au WEI 2015</h1>
<br/>
{% if myself and done %}
<h3>Tu as demandé à être inscrit au WEI 2015</h3>
<h3>État de la demande : undefined</h3>
<br/>
<h4>Pour toute demande relative à ton inscription, tu peux contacter un des respo WEI</h4>
<h4>(Nom : mail)</h4>
{% elif myself %}
<h2>{{ compte.prenom }} {{ compte.nom }}</h2>
<h3>{{ compte.mail }}</h3>
<br/>
<form method="post" action="" class="form-horizontal">{% csrf_token %}
{% include "note/form_contents.html" %}
</form>
{% else %}
<h3>Ce compte ne peut pas être inscrit au WEI</h3>
{% endif %}
<br/>
</div>
</div>
{% endblock %}
{% extends "note/base.html" %}
{% block title %}Inscription{% endblock %}
{% block mainstyle %}main_style{% endblock %}
{% block content %}
<div class="tabbable">
<div class="labels">
<ul id="tab-labels">
<li><h5><a href="{{ NOTE_ROOT_URL }}wei/" class="default active">Consignes d'inscription</a></h5></li>
{% if haswei %}
<li><h5><a href="{{ NOTE_ROOT_URL }}wei/inscrits/" class="default">Liste des inscrits</a></h5></li>
{% endif %}
{% if myself %}
<li><h5><a href="{{ NOTE_ROOT_URL }}wei/monInscription/" class="default">Mon inscription au WEI</a></h5></li>
{% endif %}
{% if preinscriptions %}
<li><h5><a href="{{ NOTE_ROOT_URL }}wei/1a/" class="default">Inscription 1A</a></h5></li>
{% endif %}
{% if inscriptions %}
<li><h5><a href="{{ NOTE_ROOT_URL }}wei/vieux/" class="default">Inscription 2A+</a></h5></li>
{% endif %}
</ul>
</div>
<div id="tab-panels">
<h1>High[WEI] To Hell</h1>
<br/>
<h1>Inscription WEI</h1>
<br/>
{% if succes %}
<p>Ta demande d'inscription a bien été prise en compte</p>
{% else %}
<p>Une erreur s'est produite lors de ta demande d'inscription. Si le problème persiste, contacte un responsable WEI</p>
{% endif %}
</div>
</div>
{% endblock %}
{% extends "note/base.html" %}
{% block title %}Inscription{% endblock %}
{% block mainstyle %}main_style{% endblock %}
{% block content %}
<div class="tabbable">
<div class="labels">
<ul id="tab-labels">
<li><h5><a href="{{ NOTE_ROOT_URL }}wei/" class="default">Consignes d'inscription</a></h5></li>
{% if haswei %}
<li><h5><a href="{{ NOTE_ROOT_URL }}wei/inscrits/" class="default">Liste des inscrits</a></h5></li>
{% endif %}
{% if myself %}
<li><h5><a href="{{ NOTE_ROOT_URL }}wei/monInscription/" class="default">Mon inscription au WEI</a></h5></li>
{% endif %}
{% if preinscriptions %}
<li><h5><a href="{{ NOTE_ROOT_URL }}wei/1a/" class="default">Inscription 1A</a></h5></li>
{% endif %}
{% if inscriptions %}
<li><h5><a href="{{ NOTE_ROOT_URL }}wei/vieux/" class="default active">Inscription 2A+</a></h5></li>
{% endif %}
</ul>
</div>
<div id="tab-panels">
<h1>High[WEI] To Hell</h1>
<br/>
{% if inscriptions and form %}
<h1>Inscription 2A+ WEI</h1>
<br/>
<form method="post" action="" class="form-horizontal">{% csrf_token %}
{% include "note/form_contents.html" %}
</form>
{% elif inscriptions %}
<h3>Le formulaire 2A+ sera bientôt disponible</h3>
<br/>
{% else %}
<h2>Tu n'as pas accès à cette page</h2>
{% endif %}
<br/>
</div>
</div>
{% endblock %}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment