Allow multiple levels for same book. Generate multiple books. Close #26
This commit is contained in:
parent
031027be0a
commit
a4a8dd12ef
2 changed files with 32 additions and 4 deletions
|
@ -1,7 +1,7 @@
|
||||||
from django import forms
|
from django import forms
|
||||||
from django.core.exceptions import ValidationError
|
from django.core.exceptions import ValidationError
|
||||||
|
|
||||||
from manuels.models import Book, SuppliesRequirement
|
from manuels.models import Book, SuppliesRequirement, Level
|
||||||
|
|
||||||
|
|
||||||
class EditBookForm(forms.ModelForm):
|
class EditBookForm(forms.ModelForm):
|
||||||
|
@ -42,10 +42,15 @@ class EditBookForm(forms.ModelForm):
|
||||||
|
|
||||||
class AddBookForm(EditBookForm):
|
class AddBookForm(EditBookForm):
|
||||||
class Meta(EditBookForm.Meta):
|
class Meta(EditBookForm.Meta):
|
||||||
fields = ['teacher', 'level', 'field', 'no_book', 'see_later', 'title', 'authors', 'editor', 'other_editor',
|
fields = ['teacher', 'levels', 'field', 'no_book', 'see_later', 'title', 'authors', 'editor', 'other_editor',
|
||||||
'publication_year', 'isbn', 'price', 'previously_acquired', 'comments', 'add_another']
|
'publication_year', 'isbn', 'price', 'previously_acquired', 'comments', 'add_another']
|
||||||
|
|
||||||
add_another = forms.BooleanField(label='Ajouter un autre livre', required=False, initial=True)
|
add_another = forms.BooleanField(label='Ajouter un autre livre', required=False, initial=True)
|
||||||
|
levels = forms.ModelMultipleChoiceField(
|
||||||
|
queryset=Level.objects.all(),
|
||||||
|
label='Classes',
|
||||||
|
required=True
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class EditSuppliesForm(forms.ModelForm):
|
class EditSuppliesForm(forms.ModelForm):
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
from django.contrib import messages
|
from django.contrib import messages
|
||||||
from django.contrib.auth.mixins import PermissionRequiredMixin
|
from django.contrib.auth.mixins import PermissionRequiredMixin
|
||||||
|
from django.http import HttpResponseRedirect
|
||||||
from django.shortcuts import get_object_or_404, redirect
|
from django.shortcuts import get_object_or_404, redirect
|
||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
from django.views.generic import CreateView, ListView, UpdateView, DeleteView, FormView, DetailView, TemplateView
|
from django.views.generic import CreateView, ListView, UpdateView, DeleteView, FormView, DetailView, TemplateView
|
||||||
|
@ -95,7 +96,6 @@ class AddItemView(ItemView, CreateView):
|
||||||
verb = 'Ajouter'
|
verb = 'Ajouter'
|
||||||
|
|
||||||
def get_success_url(self):
|
def get_success_url(self):
|
||||||
messages.success(self.request, f'"{self.object}" a été ajouté.')
|
|
||||||
if self.add_another:
|
if self.add_another:
|
||||||
return reverse(self.success_target, args=[str(self.teacher.pk)])
|
return reverse(self.success_target, args=[str(self.teacher.pk)])
|
||||||
else:
|
else:
|
||||||
|
@ -103,7 +103,9 @@ class AddItemView(ItemView, CreateView):
|
||||||
|
|
||||||
def form_valid(self, form):
|
def form_valid(self, form):
|
||||||
self.add_another = form.cleaned_data['add_another']
|
self.add_another = form.cleaned_data['add_another']
|
||||||
return super().form_valid(form)
|
response = super().form_valid(form)
|
||||||
|
messages.success(self.request, f'"{self.object}" a été ajouté.')
|
||||||
|
return response
|
||||||
|
|
||||||
|
|
||||||
class BookView:
|
class BookView:
|
||||||
|
@ -116,6 +118,27 @@ class BookView:
|
||||||
class AddBookView(BookView, AddItemView):
|
class AddBookView(BookView, AddItemView):
|
||||||
form_class = AddBookForm
|
form_class = AddBookForm
|
||||||
|
|
||||||
|
def form_valid(self, form: AddBookForm):
|
||||||
|
self.add_another = form.cleaned_data['add_another']
|
||||||
|
for level in form.cleaned_data['levels']:
|
||||||
|
book = Book.objects.create(
|
||||||
|
teacher=form.cleaned_data['teacher'],
|
||||||
|
level=level,
|
||||||
|
field=form.cleaned_data['field'],
|
||||||
|
title=form.cleaned_data['title'],
|
||||||
|
authors=form.cleaned_data['authors'],
|
||||||
|
editor=form.cleaned_data['editor'],
|
||||||
|
other_editor=form.cleaned_data['other_editor'],
|
||||||
|
publication_year=form.cleaned_data['publication_year'],
|
||||||
|
isbn=form.cleaned_data['isbn'],
|
||||||
|
price=form.cleaned_data['price'],
|
||||||
|
previously_acquired=form.cleaned_data['previously_acquired'],
|
||||||
|
comments=form.cleaned_data['comments'],
|
||||||
|
)
|
||||||
|
messages.success(self.request, f'"{book}" a été ajouté.')
|
||||||
|
|
||||||
|
return HttpResponseRedirect(self.get_success_url())
|
||||||
|
|
||||||
|
|
||||||
class SuppliesView:
|
class SuppliesView:
|
||||||
model = SuppliesRequirement
|
model = SuppliesRequirement
|
||||||
|
|
Loading…
Reference in a new issue