From e88867b65d78a0d8663a751372a2c5901093f4a5 Mon Sep 17 00:00:00 2001 From: Ties Dirksen Date: Thu, 22 Jan 2026 16:26:32 +0100 Subject: [PATCH] Het werkt maar is wel lelijk maar heb geen tijd of zin om er meer naar te kijken --- website/registrations/forms.py | 21 +++++++++++++++++++ .../templates/registrations/step-2.html | 10 +++++++++ website/registrations/views.py | 6 +++++- 3 files changed, 36 insertions(+), 1 deletion(-) 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 @@
{{ registration_semester }}

{% csrf_token %} + + {% if form.warnings %} + +

Please check the box below to continue with registration

+ {% else %} + + {% endif %} {% bootstrap_form form %} {% bootstrap_button "Submit" name="submit" value="submit" button_type="submit" button_class="btn-secondary" %}
diff --git a/website/registrations/views.py b/website/registrations/views.py index 360ee920..cabde903 100644 --- a/website/registrations/views.py +++ b/website/registrations/views.py @@ -81,6 +81,11 @@ def get_initial(self): return initial def form_valid(self, form): + """Check for warnings before registering.""" + if form.warnings and not form.cleaned_data.get("ignore_warnings"): + form.add_error(None, form.warnings[0]) + return self.form_invalid(form) + """Register new user if the form is valid.""" with transaction.atomic(): user, _ = User.objects.get_or_create(github_id=self.request.session["github_id"]) @@ -91,7 +96,6 @@ def form_valid(self, form): user.github_username = form.cleaned_data["github_username"] user.student_number = form.cleaned_data["student_number"] user.save() - Registration.objects.create( user=user, semester=Semester.objects.get_first_semester_with_open_registration(),