diff --git a/bda/static/bda/css/bda.css b/bda/static/bda/css/bda.css index 7f2c1d9a..a9702787 100644 --- a/bda/static/bda/css/bda.css +++ b/bda/static/bda/css/bda.css @@ -122,4 +122,4 @@ td { color:#FFF; background-color:rgb(222, 130, 107); -} \ No newline at end of file +} diff --git a/petitscours/static/petitscours/css/confirmation.css b/petitscours/static/petitscours/css/confirmation.css new file mode 100644 index 00000000..4adb75aa --- /dev/null +++ b/petitscours/static/petitscours/css/confirmation.css @@ -0,0 +1,77 @@ +/** Honteusement copié-collé de bda.css **/ +/** JQuery-Confirm box **/ + +.jconfirm .jconfirm-bg { + background-color: rgb(0,0,0,0.6) !important; +} + +.jconfirm .jconfirm-box { + padding:0; + border-radius:0 !important; + font-family:Roboto; +} + +.jconfirm .jconfirm-box .content-pane { + border-bottom:1px solid #ddd; + margin: 0px !important; +} + +.jconfirm .jconfirm-box .content { + padding: 5px; +} + +.jconfirm .jconfirm-box .content-pane { + border-bottom:1px solid #ddd; + margin: 0px !important; +} + +.jconfirm .jconfirm-box .content { + padding: 10px; +} + +.jconfirm .jconfirm-box .content a, +.jconfirm .jconfirm-box .content a:hover { + color: #D81138; + font-weight: bold; +} + +.jconfirm .jconfirm-box .buttons { + margin-top:-6px; /* j'arrive pas à voir pk y'a un espace au dessus sinon... */ + padding:0; + height:40px; +} + +.jconfirm .jconfirm-box .buttons button { + min-width:40px; + height:100%; + margin:0; + margin:0 !important; + border-radius: 0 !important; +} + +.jconfirm .jconfirm-box .buttons button:first-child:focus, +.jconfirm .jconfirm-box .buttons button:first-child:hover { + color:#FFF !important; + background:forestgreen !important; +} + +.jconfirm .jconfirm-box .buttons button:nth-child(2):focus, +.jconfirm .jconfirm-box .buttons button:nth-child(2):hover { + color:#FFF !important; + background:#D93A32 !important; +} + +.jconfirm .jconfirm-box div.title-c .title { + display: block; + + padding:0 15px; + height:40px; + line-height:40px; + + font-family:Dosis; + font-size:20px; + font-weight:bold; + + color:#FFF; + background-color:rgb(222, 130, 107); +} diff --git a/petitscours/templates/petitscours/demande_list.html b/petitscours/templates/petitscours/demande_list.html index 04132d57..e79c3fc1 100644 --- a/petitscours/templates/petitscours/demande_list.html +++ b/petitscours/templates/petitscours/demande_list.html @@ -21,7 +21,11 @@ {{ demande.created|date:"d E Y" }} {% if demande.traitee_par %}{{ demande.traitee_par.username }}{% else %}{% endif %} - Détails + {% if demande.traitee %} + Détails + {% else %} + Traiter + {% endif %} {% endfor %} diff --git a/petitscours/templates/petitscours/details_demande_infos.html b/petitscours/templates/petitscours/details_demande_infos.html index 42f37d56..2dfcbecb 100644 --- a/petitscours/templates/petitscours/details_demande_infos.html +++ b/petitscours/templates/petitscours/details_demande_infos.html @@ -8,7 +8,20 @@ Quand {{ demande.quand }} Fréquence {{ demande.freq }} Matières {% for matiere in demande.matieres.all %}{% if forloop.counter0 > 0 %}, {% endif %}{{ matiere }}{% endfor %} - Niveau souhaité {{ demande.get_niveau_display }} + Niveau souhaité + {% if levels %} +
+ {% csrf_token %} + +
+ {% else %} + {{ demande.get_niveau_display }} + {% endif %} + Agrégé requis Remarques {{ demande.remarques }} diff --git a/petitscours/templates/petitscours/traitement_demande.html b/petitscours/templates/petitscours/traitement_demande.html index e95edb61..bb35a70b 100644 --- a/petitscours/templates/petitscours/traitement_demande.html +++ b/petitscours/templates/petitscours/traitement_demande.html @@ -1,4 +1,11 @@ {% extends "petitscours/base_title.html" %} +{% load static %} + +{% block extra_head %} + + + +{% endblock %} {% block realcontent %}

@@ -9,50 +16,78 @@

{% include "petitscours/details_demande_infos.html" %}
+ {% if errors %} -
- Attention: - -
+
+ Attention: + +
{% endif %} + {% if unsatisfied %} -
- Attention: Impossible de trouver des propositions pour les matières suivantes: - -
+
+ Attention: Impossible de trouver des propositions pour les matières suivantes: + +
{% endif %} - {% if proposals %} -
- {% csrf_token %} - Propositions: - -

Mails pour les membres proposés :

- {% for proposeduser, mail in proposed_mails %} -
Pour {{ proposeduser }}:
- {% with object=mail.0 content=mail.1 %} -
{{ object }}
-
{{ content }}
- {% endwith %} - {% endfor %} -

Mail pour l'auteur de la demande :

- {% with object=mainmail.0 content=mainmail.1 %} -
{{ object }}
-
{{ content|safe }}
- {% endwith %} - - {% if redo %}{% endif %} - + + + + {% csrf_token %} + {% if redo %}{% endif %} + {% if proposals %} + Propositions: + +

Mails pour les membres proposés :

+ {% for proposeduser, mail in proposed_mails %} +
Pour {{ proposeduser }}:
+ {% with object=mail.0 content=mail.1 %} +
{{ object }}
+
{{ content }}
+ {% endwith %} + {% endfor %} +

Mail pour l'auteur de la demande :

+ {% with object=mainmail.0 content=mainmail.1 %} +
{{ object }}
+
{{ content|safe }}
+ {% endwith %} + + + {% else %} +

Impossible de trouver des propositions pour cette demande

+
Traitement manuel obligatoire !
+ + + + {% endif %}
- {% else %} -

Impossible de trouver des propositions pour cette demande

-
Traitement manuel obligatoire !
- {% endif %} +

Retour à la liste des demandes

diff --git a/petitscours/templates/petitscours/traitement_demande_autre_niveau.html b/petitscours/templates/petitscours/traitement_demande_autre_niveau.html index c10c8aaf..542a7105 100644 --- a/petitscours/templates/petitscours/traitement_demande_autre_niveau.html +++ b/petitscours/templates/petitscours/traitement_demande_autre_niveau.html @@ -1,6 +1,12 @@ {% extends "petitscours/base_title.html" %} {% load static %} +{% block extra_head %} + + + +{% endblock %} + {% block realcontent %}

Traitement de la demande de petits cours {{ demande.id }} @@ -14,52 +20,77 @@ Attention: demande de petits cours spécifiant le niveau "Autre niveau": choisissez les candidats correspondant aux remarques de la demande. S'il y a moins de 3 candidats adaptés, ne mettre que ceux qui conviennent, pas besoin de faire du bourrage :) {% if unsatisfied %} -
- Attention: Impossible de trouver des propositions pour les matières suivantes: - -
+
+ Attention: Impossible de trouver des propositions pour les matières suivantes: + +
{% endif %} - {% if proposals %} -
- {% csrf_token %} - {% for matiere, users in proposals %} -

{{ matiere }}

- {% for i in "012"|make_list %}{% if i|add:"0" < users|length %} -
- Proposition {{ i|add:"1" }}: - -
-

-
- -
- {% endif %} - {% endfor %} - {% endfor %} - + + {% csrf_token %} {% if redo %}{% endif %} - -
+ {% if proposals %} + {% for matiere, users in proposals %} +

{{ matiere }}

+ {% for i in "012"|make_list %}{% if i|add:"0" < users|length %} +
+ Proposition {{ i|add:"1" }}: + +
+

+
+ +
+ {% endif %} + {% endfor %} + {% endfor %} + + {% else %} -

Impossible de trouver des propositions pour cette demande

-
Traitement manuel obligatoire !
+

Impossible de trouver des propositions pour cette demande

+
Traitement manuel obligatoire !
+ + + {% endif %} + +

Retour à la liste des demandes

diff --git a/petitscours/templates/petitscours/traitement_demande_success.html b/petitscours/templates/petitscours/traitement_demande_success.html deleted file mode 100644 index 9d2ded41..00000000 --- a/petitscours/templates/petitscours/traitement_demande_success.html +++ /dev/null @@ -1,7 +0,0 @@ -{% extends "petitscours/base_title.html" %} - -{% block realcontent %} -

Traitement de la demande de petits cours {{ demande.id }}

-
Demande {{ demande.id }} de {{ demande.name }} {% if redo %}re{% endif %}traitée avec succès !
- Retour à la liste des demandes -{% endblock %} diff --git a/petitscours/views.py b/petitscours/views.py index 61230239..39a29e27 100644 --- a/petitscours/views.py +++ b/petitscours/views.py @@ -8,6 +8,7 @@ from django.core import mail from django.db import transaction from django.shortcuts import get_object_or_404, redirect, render from django.template import loader +from django.urls import reverse from django.utils import timezone from django.views.decorators.csrf import csrf_exempt from django.views.generic import DetailView, ListView @@ -16,6 +17,7 @@ from gestioncof.decorators import buro_required from gestioncof.models import CofProfile from petitscours.forms import DemandeForm, MatieresFormSet from petitscours.models import ( + LEVELS_CHOICES, PetitCoursAbility, PetitCoursAttribution, PetitCoursAttributionCounter, @@ -168,6 +170,12 @@ def _traitement_other_preparing(request, demande): def _traitement_other(request, demande, redo): if request.method == "POST": + if "niveau" in request.POST: + demande.niveau = request.POST["niveau"] + demande.save() + return redirect( + reverse("petits-cours-demande-traitement", args=(demande.id,)) + ) if "preparing" in request.POST: return _traitement_other_preparing(request, demande) else: @@ -180,16 +188,38 @@ def _traitement_other(request, demande, redo): "demande": demande, "unsatisfied": unsatisfied, "proposals": proposals.items(), + "levels": LEVELS_CHOICES, }, ) def _traitement_post(request, demande): + redo = "redo" in request.POST + manual = "manual" in request.POST + + if not manual: + _traitement_attributions(request, demande) + + demande.traitee = True + demande.traitee_par = request.user + demande.processed = timezone.now() + demande.save() + + messages.success( + request, + f"Demande de {demande.name} {'re' if redo else ''}traitée avec succès !", + ) + if redo: + return redirect(demande.get_absolute_url()) + else: + return redirect(reverse("petits-cours-demandes-list")) + + +def _traitement_attributions(request, demande): proposals = {} proposed_for = {} unsatisfied = [] extra = request.POST["extra"].strip() - redo = "redo" in request.POST attribdata = request.POST["attribdata"] attribdata = dict(json.loads(attribdata)) for matiere in demande.matieres.all(): @@ -253,15 +283,6 @@ def _traitement_post(request, demande): user=user, matiere=matiere, demande=demande, rank=rank + 1 ) attrib.save() - demande.traitee = True - demande.traitee_par = request.user - demande.processed = timezone.now() - demande.save() - return render( - request, - "petitscours/traitement_demande_success.html", - {"demande": demande, "redo": redo}, - ) @login_required