Newer
Older
from django import forms
from django.utils.translation import ugettext_lazy as _
from django_select2.forms import Select2Widget
from biscuit.apps.chronos.models import Room
from .models import LessonDocumentation, PersonalNote
class LessonDocumentationForm(forms.ModelForm):
class Meta:
model = LessonDocumentation
fields = ['topic', 'homework']
class PersonalNoteForm(forms.ModelForm):
class Meta:
model = PersonalNote
fields = ['absent', 'late', 'excused', 'remarks']
person_name = forms.CharField(disabled=True)
def __init__(self, *args, **kwargs):
self.fields['person_name'].widget.attrs.update(
{'class': 'alsijil-lesson-personal-note-name'})
if self.instance and getattr(self.instance, 'person', None):
self.fields['person_name'].initial = str(self.instance.person)
class SelectForm(forms.Form):
group = forms.ModelChoiceField(
queryset=Group.objects.annotate(lessons_count=Count('lessons')).filter(lessons_count__gt=0),
label=_('Group'), required=False, widget=Select2Widget)
teacher = forms.ModelChoiceField(
queryset=Person.objects.annotate(lessons_count=Count(
label=_('Teacher'), required=False, widget=Select2Widget)
room = forms.ModelChoiceField(
queryset=Room.objects.annotate(lessons_count=Count(
'lesson_periods')).filter(lessons_count__gt=0),
label=_('Room'), required=False, widget=Select2Widget)
PersonalNoteFormSet = forms.modelformset_factory(
PersonalNote, form=PersonalNoteForm, max_num=0, extra=0)
class ManageAbsenceForm(forms.Form):
date_start = forms.DateField(label=_('Start date'), widget=forms.SelectDateWidget, initial=datetime.today)
date_end = forms.DateField(label=_('End date'), widget=forms.SelectDateWidget, initial=datetime.today)
starting_lesson = forms.IntegerField(label=_('Starting lesson'), initial=0, min_value=0)
person = forms.ModelChoiceField(label=_('Person'), queryset=Person.objects.all(), widget=Select2Widget)
absent = forms.BooleanField(label=_('Absent'), initial=True, required=False)
excused = forms.BooleanField(label=_('Excused'), initial=True, required=False)
remarks = forms.CharField(label=_('Remarks'), max_length=30, required=False)