Files
@ c6b329f0cff0
Branch filter:
Location: website/www/conservancy/apps/assignment/forms.py - annotation
c6b329f0cff0
2.0 KiB
text/x-python
Fix validation.
0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed c6b329f0cff0 0565f9b308ed | from django import forms
from django.core.validators import ValidationError
from django.utils import timezone
from .models import Assignment
from .terms import TERMS
def validate_in_past(value):
if value >= timezone.now().date():
raise ValidationError('Enter a date in the past')
class AssignmentForm(forms.ModelForm):
period_begins = forms.DateField(
label='Start of period to assign',
required=True,
widget=forms.DateInput(attrs={'type': 'date'}),
validators=[validate_in_past],
)
period_end_type = forms.ChoiceField(
label='End of period to assign',
choices=[
('all future contributions', 'all future contributions'),
('a specific past date', 'a specific past date (specify below)'),
],
widget=forms.RadioSelect(),
)
period_ends = forms.DateField(
label='Specific past date (if applicable)',
required=False,
widget=forms.DateInput(attrs={'type': 'date'}),
validators=[validate_in_past],
)
agreement_terms = forms.CharField(
widget=forms.Textarea(attrs={'readonly': 'readonly'}),
initial=TERMS,
help_text='Please be aware that some employment agreements explicitly transfer copyright ownership to the employer. We recommend you review your recent employment agreements for such clauses.',
)
class Meta:
model = Assignment
fields = [
'full_name',
'email',
'country_of_residence',
'repositories',
'all_emails',
'period_begins',
'period_end_type',
'period_ends',
'agreement_terms',
'attestation_of_copyright',
]
def clean_period_ends(self):
if 'period_begins' in self.cleaned_data and 'period_ends' in self.cleaned_data and self.cleaned_data['period_begins'] and self.cleaned_data['period_ends'] and self.cleaned_data['period_begins'] > self.cleaned_data['period_ends']:
raise ValidationError('End of period is before start')
|