-
Piotr Gawron authoredPiotr Gawron authored
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
forms.py 3.63 KiB
from django import forms
from django.forms import ModelForm
from .models import *
from datetime import datetime
"""
Possible redundancy, but if need arises, contents of forms can be easily customized
"""
CURRENT_YEAR = datetime.now().year
YEAR_CHOICES=tuple(range(CURRENT_YEAR,CURRENT_YEAR - 120, -1))
class SubjectAddForm(ModelForm):
date_born = forms.DateField(label='Date of birth',
widget=forms.SelectDateWidget(years=YEAR_CHOICES)
)
class Meta:
model = Subject
fields = '__all__'
def clean(self):
subject = self.cleaned_data
subjects_from_db = Subject.objects.filter(screening_number=subject['screening_number'])
if len(subjects_from_db):
self.add_error('screening_number', "Screening number already in use")
def get_new_screening_number(self):
result = 1;
numbers = Subject.objects.values_list('screening_number')
for number_row in numbers:
try:
id = int(number_row[0])
result = max(result, id+1)
except:
pass
return result
def clean_screening_number(self):
if self.cleaned_data['screening_number']=="":
self.cleaned_data['screening_number'] = self.get_new_screening_number()
return self.cleaned_data['screening_number'];
class SubjectDetailForm(ModelForm):
class Meta:
model = Subject
fields = '__all__'
class SubjectEditForm(ModelForm):
date_born = forms.DateField(label='Date of birth',
widget=forms.SelectDateWidget(years=YEAR_CHOICES)
)
def __init__(self, *args, **kwargs):
super(SubjectEditForm, self).__init__(*args, **kwargs)
instance = getattr(self, 'instance', None)
if instance and instance.id:
self.fields['screening_number'].widget.attrs['readonly'] = True
def clean_foo_field(self):
instance = getattr(self, 'instance', None)
if instance and instance.id:
return instance.screening_number
else:
return self.cleaned_data['screening_number']
class Meta:
model = Subject
fields = '__all__'
class WorkerAddForm(ModelForm):
class Meta:
model = Worker
exclude = ['appointments']
class WorkerDetailForm(ModelForm):
class Meta:
model = Worker
fields = '__all__'
class WorkerEditForm(ModelForm):
class Meta:
model = Worker
fields = '__all__'
class AppointmentDetailForm(ModelForm):
class Meta:
model = Appointment
fields = '__all__'
class AppointmentEditForm(ModelForm):
class Meta:
model = Appointment
fields = '__all__'
datetime_when = forms.DateTimeField(label='Appointment on (YYYY-MM-DD HH:MM:SS)')
class AppointmentAddForm(ModelForm):
class Meta:
model = Appointment
exclude = ['is_finished']
datetime_when = forms.DateTimeField(label='Appointment on (YYYY-MM-DD HH:MM:SS)')
class VisitDetailForm(ModelForm):
datetime_begin = forms.DateField(label="Visit begins on",
widget=forms.SelectDateWidget(years=YEAR_CHOICES)
)
datetime_end = forms.DateField(label="Visit ends on",
widget=forms.SelectDateWidget(years=YEAR_CHOICES)
)
class Meta:
model = Visit
exclude = ['is_finished']
class VisitAddForm(ModelForm):
datetime_begin = forms.DateField(label="Visit begins on",
widget=forms.SelectDateWidget(years=YEAR_CHOICES)
)
datetime_end = forms.DateField(label="Visit ends on",
widget=forms.SelectDateWidget(years=YEAR_CHOICES)
)
class Meta:
model = Visit
exclude = ['is_finished']