Files
@ 52c0eb8e6c29
Branch filter:
Location: website/www/conservancy/apps/assignment/forms.py - annotation
52c0eb8e6c29
2.6 KiB
text/x-python
assignment: Mention 7 days on form.
0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 530890f6ad9d 530890f6ad9d 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 530890f6ad9d 0565f9b308ed 530890f6ad9d 0565f9b308ed 0565f9b308ed 0565f9b308ed 530890f6ad9d 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 530890f6ad9d 530890f6ad9d 530890f6ad9d 530890f6ad9d 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed c6b329f0cff0 0565f9b308ed b0263491a0ee b0263491a0ee b0263491a0ee c9a76ea17fe3 c9a76ea17fe3 | 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='Assign the copyright in my above contributions starting on',
help_text='You can use the day you first started contributing (or, equivalently, your date of birth), or any later date.',
required=True,
widget=forms.DateInput(attrs={'type': 'date'}),
validators=[validate_in_past],
)
period_end_type = forms.ChoiceField(
label='and ending on',
choices=[
('all future contributions', 'all future contributions (no end date)'),
('a specific past date', 'a specific past date (specify below)'),
],
widget=forms.RadioSelect(),
initial='all future contributions',
)
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.',
)
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields['attestation_of_copyright'].required = True
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')
if self.cleaned_data['period_end_type'] == 'a specific past date' and not self.cleaned_data['period_ends']:
raise ValidationError('This field is required')
return self.cleaned_data['period_ends']
|