Files
@ 541f423a3d1c
Branch filter:
Location: website/conservancy/assignment/forms.py - annotation
541f423a3d1c
2.5 KiB
text/x-python
Add transparent background to T-shirt image
7374c9f91528 7374c9f91528 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 7374c9f91528 7374c9f91528 7374c9f91528 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 530890f6ad9d 530890f6ad9d 530890f6ad9d 530890f6ad9d 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 0565f9b308ed 05c7ed664763 05c7ed664763 05c7ed664763 05c7ed664763 0565f9b308ed 05c7ed664763 b0263491a0ee 05c7ed664763 | import datetime
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):
# Adding a day to allow the current date anywhere on earth, regardless of
# the server timezone.
if value > timezone.now().date() + datetime.timedelta(days=1):
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,
)
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):
period_begins = self.cleaned_data.get('period_begins')
period_ends = self.cleaned_data.get('period_ends')
period_end_type = self.cleaned_data.get('period_end_type')
if period_begins and period_ends and period_begins > period_ends:
raise ValidationError('End of period is before start')
if period_end_type == 'a specific past date' and not period_ends:
raise ValidationError('This field is required')
return period_ends
|