2018-05-21 22:23:53 +02:00
|
|
|
from django import forms
|
2018-06-07 07:46:47 +02:00
|
|
|
from django.core.exceptions import ValidationError
|
2018-05-21 22:23:53 +02:00
|
|
|
|
2018-06-10 20:03:00 +02:00
|
|
|
from manuels.models import Book, SuppliesRequirement, Level
|
2018-05-21 22:23:53 +02:00
|
|
|
|
|
|
|
|
2018-05-31 19:11:01 +02:00
|
|
|
class EditBookForm(forms.ModelForm):
|
2018-05-21 22:23:53 +02:00
|
|
|
class Meta:
|
|
|
|
model = Book
|
2018-06-07 07:46:47 +02:00
|
|
|
fields = ['teacher', 'level', 'field', 'no_book', 'see_later', 'title', 'authors', 'editor', 'other_editor',
|
2019-04-06 19:25:04 +02:00
|
|
|
'publication_year', 'isbn', 'price', 'previously_acquired', 'comments', 'consumable']
|
2018-05-31 19:11:01 +02:00
|
|
|
|
|
|
|
no_book = forms.BooleanField(label='Pas de livre pour cette classe/matière', required=False, initial=False)
|
2018-06-04 18:24:09 +02:00
|
|
|
see_later = forms.BooleanField(
|
|
|
|
label='Voir à la rentrée', help_text="Notamment en cas de désaccord sur l'adoption ou non d'un manuel",
|
|
|
|
required=False, initial=False
|
|
|
|
)
|
2018-05-31 19:11:01 +02:00
|
|
|
|
2018-06-02 09:58:57 +02:00
|
|
|
def __init__(self, *args, **kwargs):
|
|
|
|
super().__init__(*args, **kwargs)
|
|
|
|
self.fields['title'].widget = forms.TextInput()
|
|
|
|
self.fields['authors'].widget = forms.TextInput()
|
2018-06-02 16:52:17 +02:00
|
|
|
self.fields['comments'].widget.attrs.update(rows=3)
|
2018-06-14 00:07:29 +02:00
|
|
|
self.fields['teacher'].widget.attrs.update({'class': 'custom-select'})
|
|
|
|
self.fields['editor'].widget.attrs.update({'class': 'custom-select'})
|
|
|
|
self.fields['previously_acquired'].widget.attrs.update({'class': 'custom-select'})
|
2019-04-06 19:25:04 +02:00
|
|
|
self.fields['consumable'].widget.attrs.update({'class': 'custom-select'})
|
2018-06-15 20:41:29 +02:00
|
|
|
if 'level' in self.fields:
|
|
|
|
self.fields['level'].widget.attrs.update({'class': 'custom-select'})
|
2018-06-02 09:58:57 +02:00
|
|
|
|
2018-06-07 07:46:47 +02:00
|
|
|
def clean(self):
|
|
|
|
editor = self.cleaned_data['editor']
|
|
|
|
other_editor = self.cleaned_data['other_editor']
|
|
|
|
title = self.cleaned_data['title']
|
|
|
|
|
|
|
|
if (editor
|
|
|
|
and 'autre' in editor.name.lower()
|
|
|
|
and not other_editor
|
|
|
|
and title not in ['PAS DE LIVRE POUR CETTE CLASSE', 'VOIR À LA RENTRÉE']):
|
|
|
|
self.add_error(
|
|
|
|
'other_editor',
|
|
|
|
ValidationError(
|
|
|
|
"Vous devez préciser l'éditeur si vous n'en choisissez pas un parmi la liste.",
|
|
|
|
code='missing'
|
|
|
|
)
|
|
|
|
)
|
|
|
|
|
2018-06-18 18:05:44 +02:00
|
|
|
def clean_previously_acquired(self):
|
|
|
|
data = self.cleaned_data['previously_acquired']
|
|
|
|
if data is None or data == '':
|
|
|
|
raise ValidationError('Vous devez choisir une valeur')
|
|
|
|
|
|
|
|
return data
|
|
|
|
|
2018-05-31 19:11:01 +02:00
|
|
|
|
|
|
|
class AddBookForm(EditBookForm):
|
|
|
|
class Meta(EditBookForm.Meta):
|
2018-06-10 20:03:00 +02:00
|
|
|
fields = ['teacher', 'levels', 'field', 'no_book', 'see_later', 'title', 'authors', 'editor', 'other_editor',
|
2019-04-06 19:25:04 +02:00
|
|
|
'publication_year', 'isbn', 'price', 'previously_acquired', 'comments', 'add_another', 'consumable']
|
2018-05-21 23:12:35 +02:00
|
|
|
|
2018-05-22 10:13:51 +02:00
|
|
|
add_another = forms.BooleanField(label='Ajouter un autre livre', required=False, initial=True)
|
2018-06-10 20:03:00 +02:00
|
|
|
levels = forms.ModelMultipleChoiceField(
|
|
|
|
queryset=Level.objects.all(),
|
|
|
|
label='Classes',
|
2018-06-10 20:14:17 +02:00
|
|
|
required=True,
|
|
|
|
help_text='Maintenez la touche Ctrl (ou Cmd) enfoncée pour en sélectionner plusieurs.'
|
2018-06-10 20:03:00 +02:00
|
|
|
)
|
2018-05-22 10:13:51 +02:00
|
|
|
|
|
|
|
|
2018-05-31 19:11:01 +02:00
|
|
|
class EditSuppliesForm(forms.ModelForm):
|
2018-05-22 10:13:51 +02:00
|
|
|
class Meta:
|
|
|
|
model = SuppliesRequirement
|
2019-04-06 19:26:06 +02:00
|
|
|
fields = ['teacher', 'level', 'field', 'supplies']
|
2018-06-02 16:52:17 +02:00
|
|
|
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
|
|
super().__init__(*args, **kwargs)
|
|
|
|
self.fields['supplies'].widget.attrs.update(rows=3)
|
2018-06-14 00:07:29 +02:00
|
|
|
self.fields['teacher'].widget.attrs.update({'class': 'custom-select'})
|
2018-06-18 18:26:33 +02:00
|
|
|
if 'level' in self.fields:
|
|
|
|
self.fields['level'].widget.attrs.update({'class': 'custom-select'})
|
2018-05-22 10:13:51 +02:00
|
|
|
|
2018-05-31 19:11:01 +02:00
|
|
|
|
2018-06-02 16:34:15 +02:00
|
|
|
class AddSuppliesForm(EditSuppliesForm):
|
2018-05-31 19:11:01 +02:00
|
|
|
class Meta(EditSuppliesForm.Meta):
|
2019-04-06 19:26:06 +02:00
|
|
|
fields = ['teacher', 'levels', 'field', 'supplies']
|
2018-05-31 19:11:01 +02:00
|
|
|
|
2018-05-22 10:13:51 +02:00
|
|
|
add_another = forms.BooleanField(label="Ajouter d'autres fournitures", required=False, initial=True)
|
2018-06-18 18:26:33 +02:00
|
|
|
levels = forms.ModelMultipleChoiceField(
|
|
|
|
queryset=Level.objects.all(),
|
|
|
|
label='Classes',
|
|
|
|
required=True,
|
|
|
|
help_text='Maintenez la touche Ctrl (ou Cmd) enfoncée pour en sélectionner plusieurs.'
|
|
|
|
)
|