diff --git a/django_app/redbox_app/redbox_core/views/signup_views.py b/django_app/redbox_app/redbox_core/views/signup_views.py index d31552164..fdff0aad0 100644 --- a/django_app/redbox_app/redbox_core/views/signup_views.py +++ b/django_app/redbox_app/redbox_core/views/signup_views.py @@ -13,39 +13,18 @@ logger = logging.getLogger(__name__) -class Signup1(View): - def get(self, request: HttpRequest) -> HttpResponse: - if settings.ALLOW_SIGN_UPS: - return redirect("homepage") - form = SignUpForm() - return render(request, "sign-up-page-1.html", {"form": form}) - - def post(self, request: HttpRequest) -> HttpResponse: - if settings.ALLOW_SIGN_UPS: - return redirect("homepage") - form = SignUpForm(request.POST) - - # Only allow .gov.uk email accounts - email = request.POST.get("email") - if not email.endswith(".gov.uk"): - form.add_error("email", "The email must be a valid gov.uk email account") +class AbstractSignup(View): + current_page = None + next_page = None - if form.is_valid(): - request.session["sign_up_data"] = form.cleaned_data - return redirect("sign-up-page-2") - else: - return render(request, "sign-up-page-1.html", {"form": form}) - - -class Signup2(View): def get(self, request: HttpRequest) -> HttpResponse: - if settings.ALLOW_SIGN_UPS: + if not settings.ALLOW_SIGN_UPS: return redirect("homepage") form = SignUpForm() - return render(request, "sign-up-page-2.html", {"form": form}) + return render(request, f"{self.current_page}.html", {"form": form}) def post(self, request: HttpRequest) -> HttpResponse: - if settings.ALLOW_SIGN_UPS: + if not settings.ALLOW_SIGN_UPS: return redirect("homepage") combined_data = {**request.session.get("sign_up_data", {}), **request.POST.dict()} query_dict = QueryDict("", mutable=True) @@ -54,86 +33,58 @@ def post(self, request: HttpRequest) -> HttpResponse: if form.is_valid(): request.session["sign_up_data"] = form.cleaned_data - return redirect("sign-up-page-3") + return redirect(self.next_page) else: - return render(request, "sign-up-page-2.html", {"form": form}) + return render(request, f"{self.current_page}.html", {"form": form}) -class Signup3(View): - def get(self, request: HttpRequest) -> HttpResponse: - if settings.ALLOW_SIGN_UPS: - return redirect("homepage") - form = SignUpForm() - return render(request, "sign-up-page-3.html", {"form": form}) +class Signup1(AbstractSignup): + current_page = "sign-up-page-1" + next_page = "sign-up-page-2" def post(self, request: HttpRequest) -> HttpResponse: - if settings.ALLOW_SIGN_UPS: + if not settings.ALLOW_SIGN_UPS: return redirect("homepage") - combined_data = {**request.session.get("sign_up_data", {}), **request.POST.dict()} - query_dict = QueryDict("", mutable=True) - query_dict.update(combined_data) - form = SignUpForm(query_dict) + form = SignUpForm(request.POST) + + # Only allow .gov.uk email accounts + email = request.POST.get("email") + if not email.endswith(".gov.uk"): + form.add_error("email", "The email must be a valid gov.uk email account") if form.is_valid(): request.session["sign_up_data"] = form.cleaned_data - return redirect("sign-up-page-4") + return redirect("sign-up-page-2") else: - return render(request, "sign-up-page-3.html", {"form": form}) + return render(request, "sign-up-page-1.html", {"form": form}) -class Signup4(View): - def get(self, request: HttpRequest) -> HttpResponse: - if settings.ALLOW_SIGN_UPS: - return redirect("homepage") - form = SignUpForm() - return render(request, "sign-up-page-4.html", {"form": form}) +class Signup2(AbstractSignup): + current_page = "sign-up-page-2" + next_page = "sign-up-page-3" - def post(self, request: HttpRequest) -> HttpResponse: - if settings.ALLOW_SIGN_UPS: - return redirect("homepage") - combined_data = {**request.session.get("sign_up_data", {}), **request.POST.dict()} - query_dict = QueryDict("", mutable=True) - query_dict.update(combined_data) - form = SignUpForm(query_dict) - if form.is_valid(): - request.session["sign_up_data"] = form.cleaned_data - return redirect("sign-up-page-5") - else: - return render(request, "sign-up-page-4.html", {"form": form}) +class Signup3(AbstractSignup): + current_page = "sign-up-page-3" + next_page = "sign-up-page-4" -class Signup5(View): - def get(self, request: HttpRequest) -> HttpResponse: - if settings.ALLOW_SIGN_UPS: - return redirect("homepage") - form = SignUpForm() - return render(request, "sign-up-page-5.html", {"form": form}) +class Signup4(AbstractSignup): + current_page = "sign-up-page-4" + next_page = "sign-up-page-5" - def post(self, request: HttpRequest) -> HttpResponse: - if settings.ALLOW_SIGN_UPS: - return redirect("homepage") - combined_data = {**request.session.get("sign_up_data", {}), **request.POST.dict()} - query_dict = QueryDict("", mutable=True) - query_dict.update(combined_data) - form = SignUpForm(query_dict) - if form.is_valid(): - request.session["sign_up_data"] = form.cleaned_data - return redirect("sign-up-page-6") - else: - return render(request, "sign-up-page-5.html", {"form": form}) +class Signup5(AbstractSignup): + current_page = "sign-up-page-5" + next_page = "sign-up-page-6" -class Signup6(View): - def get(self, request: HttpRequest) -> HttpResponse: - if settings.ALLOW_SIGN_UPS: - return redirect("homepage") - form = SignUpForm() - return render(request, "sign-up-page-6.html", {"form": form}) +class Signup6(AbstractSignup): + current_page = "sign-up-page-6" + next_page = "sign-up-page-7" def post(self, request: HttpRequest) -> HttpResponse: - if settings.ALLOW_SIGN_UPS: + if not settings.ALLOW_SIGN_UPS: return redirect("homepage") combined_data = {**request.session.get("sign_up_data", {}), **request.POST.dict()} query_dict = QueryDict("", mutable=True) @@ -164,6 +115,6 @@ def post(self, request: HttpRequest) -> HttpResponse: class Signup7(View): def get(self, request: HttpRequest) -> HttpResponse: - if settings.ALLOW_SIGN_UPS: + if not settings.ALLOW_SIGN_UPS: return redirect("homepage") return render(request, "sign-up-page-7.html")