epcstages/stages/forms.py

53 lines
1.8 KiB
Python

from django import forms
from tabimport import FileFactory, UnsupportedFileFormat
from .models import Section, Period
class StudentImportForm(forms.Form):
upload = forms.FileField()
def __init__(self, file_label='Fichier', mandatory_headers=None, **kwargs):
super().__init__(**kwargs)
self.fields['upload'].label = file_label
self.mandatory_headers = mandatory_headers
def clean_upload(self):
f = self.cleaned_data['upload']
try:
imp_file = FileFactory(f)
except UnsupportedFileFormat as e:
raise forms.ValidationError("Erreur: %s" % e)
# Check needed headers are present
headers = imp_file.get_headers()
missing = set(self.mandatory_headers) - set(headers)
if missing:
raise forms.ValidationError("Erreur: il manque les colonnes %s" % (
", ".join(missing)))
return f
class PeriodForm(forms.Form):
section = forms.ModelChoiceField(queryset=Section.objects.all())
period = forms.ModelChoiceField(queryset=None)
def __init__(self, data, *args, **kwargs):
pass
class UploadHPFileForm(forms.Form):
upload = forms.FileField(label='Fichier HyperPlanning')
class UploadReportForm(forms.Form):
semester = forms.ChoiceField(label='Semestre', choices=(('1', '1'), ('2', '2')), required=True)
upload = forms.FileField(label='Bulletins CLOEE (pdf)')
class EmailBaseForm(forms.Form):
sender = forms.CharField(widget=forms.HiddenInput())
to = forms.CharField(widget=forms.TextInput(attrs={'size': '60'}))
cci = forms.CharField(widget=forms.TextInput(attrs={'size': '60'}))
subject = forms.CharField(widget=forms.TextInput(attrs={'size': '60'}))
message = forms.CharField(widget=forms.Textarea(attrs={'rows': 20, 'cols': 120}))