diff --git a/manuels/templates/manuels/add_item.html b/manuels/templates/manuels/add_item.html index c757e2b..b39fb4f 100644 --- a/manuels/templates/manuels/add_item.html +++ b/manuels/templates/manuels/add_item.html @@ -12,15 +12,15 @@ Retour à la liste des {{ item_plural }} {% if message_template %} -
- {% include message_template %} -
+ {% include message_template %} {% endif %}
{% csrf_token %} - {% bootstrap_form form %} + {% if form %} + {% bootstrap_form form %} + {% endif %} {% buttons %} - + {% endbuttons %}
diff --git a/manuels/templates/manuels/confirm_delete.html b/manuels/templates/manuels/confirm_delete.html new file mode 100644 index 0000000..cc07478 --- /dev/null +++ b/manuels/templates/manuels/confirm_delete.html @@ -0,0 +1,10 @@ +
+

Danger

+

+ Êtes-vous certain·e de vouloir supprimer cet élément ? + Cette action est définitive : vous ne pourrez plus le récupérer ensuite. +

+

+ {{ object }} +

+
\ No newline at end of file diff --git a/manuels/templates/manuels/list_books_supplies.html b/manuels/templates/manuels/list_books_supplies.html index 18f9c47..18080d4 100644 --- a/manuels/templates/manuels/list_books_supplies.html +++ b/manuels/templates/manuels/list_books_supplies.html @@ -48,9 +48,14 @@ {% for book in books %} - +
+ + +
{{ book.level }} {{ book.field }} @@ -92,9 +97,14 @@ {% for supply in supplies %} - +
+ + +
{{ supply.level }} {{ supply.fields }} diff --git a/manuels/templates/manuels/supplies_message.html b/manuels/templates/manuels/supplies_message.html index c67f3e3..b602d5b 100644 --- a/manuels/templates/manuels/supplies_message.html +++ b/manuels/templates/manuels/supplies_message.html @@ -1,17 +1,21 @@ -

Information

-

- En complément des fournitures communes à tous les élèves, à savoir : -

- \ No newline at end of file +
+

Information

+

+ En complément des fournitures communes à tous les élèves, à savoir : +

+ +
\ No newline at end of file diff --git a/manuels/urls.py b/manuels/urls.py index 0b91b38..1cbc72b 100644 --- a/manuels/urls.py +++ b/manuels/urls.py @@ -1,13 +1,15 @@ from django.urls import path -from manuels.views import AddBookView, ListBooksView, clear_teacher_view, AddSuppliesView, EditBookView,\ - EditSuppliesView +from manuels.views import AddBookView, ListBooksView, clear_teacher_view, AddSuppliesView, EditBookView, \ + EditSuppliesView, DeleteBookView, DeleteSuppliesView urlpatterns = [ path('teacher//add_book', AddBookView.as_view(), name='add_book'), path('teacher//add_supplies', AddSuppliesView.as_view(), name='add_supplies'), path('teacher/', ListBooksView.as_view(), name='list_books'), path('teacher//book/', EditBookView.as_view(), name='edit_book'), + 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('clear', clear_teacher_view, name='clear_teacher'), ] diff --git a/manuels/views.py b/manuels/views.py index e7332d4..dce0ba3 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 +from django.views.generic import CreateView, ListView, UpdateView, DeleteView from manuels.forms import AddBookForm, AddSuppliesForm, EditBookForm, EditSuppliesForm from manuels.models import Teacher, Book, SuppliesRequirement @@ -68,6 +68,7 @@ class ItemView(BaseTeacherView): message_template = None template_name = 'manuels/add_item.html' verb = None + button_class = 'primary' def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) @@ -75,6 +76,7 @@ class ItemView(BaseTeacherView): context['item_plural'] = self.item_text_plural context['message_template'] = self.message_template context['verb'] = self.verb + context['button_class'] = self.button_class return context def get_initial(self): @@ -119,11 +121,11 @@ class SuppliesView: success_target = 'add_supplies' item_text = 'des fournitures' item_text_plural = 'fournitures' - message_template = 'manuels/supplies_message.html' class AddSuppliesView(SuppliesView, AddItemView): form_class = AddSuppliesForm + message_template = 'manuels/supplies_message.html' class EditItemView(ItemView, UpdateView): @@ -150,6 +152,30 @@ class EditSuppliesView(SuppliesView, EditItemView): form_class = EditSuppliesForm +class DeleteItemView(ItemView, DeleteView): + teacher_field = 'teacher_pk' + item_text = None + item_text_plural = None + message_template = 'manuels/confirm_delete.html' + verb = 'Supprimer' + button_class = 'danger' + + def get_queryset(self): + return self.model.objects.filter(teacher=self.teacher) + + def get_success_url(self): + messages.success(self.request, f'"{self.object}" a été supprimé.') + return reverse('list_books', args=[str(self.teacher.pk)]) + + +class DeleteBookView(BookView, DeleteItemView): + pass + + +class DeleteSuppliesView(SuppliesView, DeleteItemView): + pass + + def clear_teacher_view(request): if request.session['teacher_pk']: del request.session['teacher_pk']