2021-12-07 16:55:45 +11:00
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 ) :
2021-12-07 17:49:57 +11:00
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 ' ] :
2021-12-07 16:55:45 +11:00
raise ValidationError ( ' End of period is before start ' )