diff --git a/website/registrations/forms.py b/website/registrations/forms.py index 6ab18780..4650f02f 100644 --- a/website/registrations/forms.py +++ b/website/registrations/forms.py @@ -35,6 +35,13 @@ def __init__(self, *args, **kwargs): self.fields["project3"].queryset = Project.objects.filter( semester=Semester.objects.get_first_semester_with_open_registration() ) + self.warnings = [] + + ignore_warnings = forms.BooleanField( + label="I acknowledge the warning(s) and want to proceed with the registration", + required=False, + initial=False, + ) github_id = forms.IntegerField(disabled=True, label="GitHub ID") github_username = forms.CharField(disabled=True, label="GitHub Username") @@ -280,4 +287,18 @@ def clean(self): if len(set(filter(None, (project1, project2, project3)))) != 3: raise ValidationError("You should fill in all preferences with unique values.") + + available_slots = sum( + bool(cleaned_data.get(f"available_during_scheduled_timeslot_{i}")) + for i in range(1, 11) + ) + + if available_slots < 4 and not cleaned_data.get("available_during_scheduled_timeslot_10"): + warning = ( + "You are only available for less than 4 scheduled timeslots and " + "not available for the last timeslot on Friday afternoon. " + "This may make scheduling difficult." + ) + self.warnings.append(warning) + return cleaned_data diff --git a/website/registrations/templates/registrations/step-2.html b/website/registrations/templates/registrations/step-2.html index a246d6b5..05452fb3 100644 --- a/website/registrations/templates/registrations/step-2.html +++ b/website/registrations/templates/registrations/step-2.html @@ -14,6 +14,16 @@