Skip to content

Commit

Permalink
Use abstract class for repeated sign-up view code
Browse files Browse the repository at this point in the history
  • Loading branch information
KevinEtchells committed Oct 11, 2024
1 parent 5fd50ae commit b39ee10
Showing 1 changed file with 37 additions and 86 deletions.
123 changes: 37 additions & 86 deletions django_app/redbox_app/redbox_core/views/signup_views.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -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)
Expand Down Expand Up @@ -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")

0 comments on commit b39ee10

Please sign in to comment.