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 %}
+
+ {% 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:
-
{% for error in errors %}{{ error }} {% endfor %}
-
+
+ Attention:
+
{% for error in errors %}{{ error }} {% endfor %}
+
{% endif %}
+
{% if unsatisfied %}
-
- Attention: Impossible de trouver des propositions pour les matières suivantes:
-
- {% for matiere in unsatisfied %}{{ matiere }} {% endfor %}
-
-
+
+ Attention: Impossible de trouver des propositions pour les matières suivantes:
+
+ {% for matiere in unsatisfied %}{{ matiere }} {% endfor %}
+
+
{% endif %}
- {% if proposals %}
-
- {% 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:
-
- {% for matiere in unsatisfied %}{{ matiere }} {% endfor %}
-
-
+
+ Attention: Impossible de trouver des propositions pour les matières suivantes:
+
+ {% for matiere in unsatisfied %}{{ matiere }} {% endfor %}
+
+
{% endif %}
- {% if proposals %}
-
+ {% if proposals %}
+ {% for matiere, users in proposals %}
+ {{ matiere }}
+ {% for i in "012"|make_list %}{% if i|add:"0" < users|length %}
+
+ Proposition {{ i|add:"1" }}:
+
+ -------
+ {% for user in users %}
+ {{ user }}
+ {% endfor %}
+
+
+
+
+
+
+ {% 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