diff --git a/manuels/migrations/0022_teacher_has_confirmed_list.py b/manuels/migrations/0022_teacher_has_confirmed_list.py
new file mode 100644
index 0000000..592c7c8
--- /dev/null
+++ b/manuels/migrations/0022_teacher_has_confirmed_list.py
@@ -0,0 +1,18 @@
+# Generated by Django 2.0.5 on 2018-06-02 15:36
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('manuels', '0021_auto_20180602_1638'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='teacher',
+ name='has_confirmed_list',
+ field=models.BooleanField(default=False, verbose_name='a confirmé les listes'),
+ ),
+ ]
diff --git a/manuels/models.py b/manuels/models.py
index ffbd7b4..6722e1e 100644
--- a/manuels/models.py
+++ b/manuels/models.py
@@ -48,6 +48,11 @@ class Teacher(BaseModel):
help_text='Utilisée pour vous transmettre votre lien personnel',
unique=True
)
+ has_confirmed_list = models.BooleanField(
+ 'a confirmé les listes',
+ default=False,
+ blank=True
+ )
def get_absolute_url(self):
from django.urls import reverse
diff --git a/manuels/templates/manuels/confirm_teacher.html b/manuels/templates/manuels/confirm_teacher.html
new file mode 100644
index 0000000..3ac300b
--- /dev/null
+++ b/manuels/templates/manuels/confirm_teacher.html
@@ -0,0 +1,29 @@
+{% extends 'manuels/base.html' %}
+
+{% load bootstrap4 %}
+{% load static %}
+
+{% block content %}
+
+
+
Bienvenue {{ teacher.full_name }}
+
+ {% block title %}Confirmer les listes{% endblock %}
+ Retour à vos listes
+
+
+
Danger
+
+ Êtes-vous certain·e de vouloir confirmer vos listes ?
+ Cette action est définitive : vous ne pourrez plus les modifier ensuite.
+
+
+
+
+
+{% endblock %}
diff --git a/manuels/templates/manuels/list_books_supplies.html b/manuels/templates/manuels/list_books_supplies.html
index d847c75..fe9f859 100644
--- a/manuels/templates/manuels/list_books_supplies.html
+++ b/manuels/templates/manuels/list_books_supplies.html
@@ -7,8 +7,15 @@
{% block content %}
@@ -25,13 +32,19 @@
Liste des livres demandés
- Ajouter un livre
+ {% if not teacher.has_confirmed_list %}
+
+ Ajouter un livre
+
+ {% endif %}
- Modifier |
+ {% if not teacher.has_confirmed_list %}
+ Modifier |
+ {% endif %}
Classe |
Discipline |
Titre |
@@ -47,16 +60,18 @@
{% for book in books %}
-
-
- |
+ {% if not teacher.has_confirmed_list %}
+
+
+ |
+ {% endif %}
{{ book.level }} |
{{ book.field }} |
{{ book.title }} |
@@ -81,13 +96,19 @@
- Modifier |
+ {% if not teacher.has_confirmed_list %}
+ Modifier |
+ {% endif %}
Classe |
Disciplines |
Liste de fournitures |
@@ -96,16 +117,18 @@
{% for supply in supplies %}
-
-
- |
+ {% if not teacher.has_confirmed_list %}
+
+
+ |
+ {% endif %}
{{ supply.level }} |
{{ supply.fields }} |
{{ supply.supplies|linebreaksbr }} |
diff --git a/manuels/urls.py b/manuels/urls.py
index 1cbc72b..1c8eac0 100644
--- a/manuels/urls.py
+++ b/manuels/urls.py
@@ -1,7 +1,7 @@
from django.urls import path
from manuels.views import AddBookView, ListBooksView, clear_teacher_view, AddSuppliesView, EditBookView, \
- EditSuppliesView, DeleteBookView, DeleteSuppliesView
+ EditSuppliesView, DeleteBookView, DeleteSuppliesView, ConfirmTeacherView
urlpatterns = [
path('teacher//add_book', AddBookView.as_view(), name='add_book'),
@@ -11,5 +11,6 @@ urlpatterns = [
path('teacher//book//delete', DeleteBookView.as_view(), name='delete_book'),
path('teacher//supplies/', EditSuppliesView.as_view(), name='edit_supplies'),
path('teacher//supplies//delete', DeleteSuppliesView.as_view(), name='delete_supplies'),
+ path('teacher//confirm', ConfirmTeacherView.as_view(), name='confirm_teacher'),
path('clear', clear_teacher_view, name='clear_teacher'),
]
diff --git a/manuels/views.py b/manuels/views.py
index dce0ba3..ff5fd13 100644
--- a/manuels/views.py
+++ b/manuels/views.py
@@ -2,7 +2,7 @@ from django.contrib import messages
from django.contrib.auth.mixins import PermissionRequiredMixin
from django.shortcuts import get_object_or_404, redirect
from django.urls import reverse
-from django.views.generic import CreateView, ListView, UpdateView, DeleteView
+from django.views.generic import CreateView, ListView, UpdateView, DeleteView, FormView
from manuels.forms import AddBookForm, AddSuppliesForm, EditBookForm, EditSuppliesForm
from manuels.models import Teacher, Book, SuppliesRequirement
@@ -70,6 +70,13 @@ class ItemView(BaseTeacherView):
verb = None
button_class = 'primary'
+ def dispatch(self, request, *args, **kwargs):
+ response = super().dispatch(request, *args, **kwargs)
+ if self.teacher.has_confirmed_list:
+ messages.error(request, "Vous avez déjà confirmé vos listes. Il n'est plus possible de les modifier.")
+ return redirect('list_books', pk=self.teacher.pk)
+ return response
+
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['item'] = self.item_text
@@ -180,3 +187,15 @@ def clear_teacher_view(request):
if request.session['teacher_pk']:
del request.session['teacher_pk']
return redirect('home_page')
+
+
+class ConfirmTeacherView(BaseTeacherView, UpdateView):
+ model = Teacher
+ fields = []
+ template_name = 'manuels/confirm_teacher.html'
+
+ def form_valid(self, form):
+ response = super().form_valid(form)
+ self.object.has_confirmed_list = True
+ self.object.save()
+ return response
diff --git a/manuels_collection/settings.py b/manuels_collection/settings.py
index 030d3f1..0cc1427 100644
--- a/manuels_collection/settings.py
+++ b/manuels_collection/settings.py
@@ -14,6 +14,7 @@ import os
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
import dj_database_url
+from django.contrib.messages import constants as messages
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
@@ -165,3 +166,7 @@ ANYMAIL = {
}
EMAIL_BACKEND = 'anymail.backends.mailgun.EmailBackend'
+
+MESSAGE_TAGS = {
+ messages.ERROR: 'danger',
+}