From 05c7ed664763c12a238f08931949b4038962bc89 2023-10-19 00:52:04 From: Ben Sturmfels Date: 2023-10-19 00:52:04 Subject: [PATCH] assignment: Prevent unhandled error when fields not provided This typically happens when a bot is submitting the form. This should be a validation error rather than an unhandled exception. --- diff --git a/www/conservancy/apps/assignment/forms.py b/www/conservancy/apps/assignment/forms.py index 1497e9783ff9a12ef818fa76faa48fa6f77997eb..1f69062fb394a5970f42dbccbc7aa12c68d5a422 100644 --- a/www/conservancy/apps/assignment/forms.py +++ b/www/conservancy/apps/assignment/forms.py @@ -63,10 +63,11 @@ class AssignmentForm(forms.ModelForm): ] 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']: + 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 self.cleaned_data['period_end_type'] == 'a specific past date' and not self.cleaned_data['period_ends']: + if period_end_type == 'a specific past date' and not period_ends: raise ValidationError('This field is required') - - return self.cleaned_data['period_ends'] + return period_ends