From 05c7ed664763c12a238f08931949b4038962bc89 Mon Sep 17 00:00:00 2001 From: Ben Sturmfels Date: Thu, 19 Oct 2023 11:52:04 +1100 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. --- www/conservancy/apps/assignment/forms.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/www/conservancy/apps/assignment/forms.py b/www/conservancy/apps/assignment/forms.py index 1497e978..1f69062f 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