From 87e5e6cbf3ecc7b729af8174a965393084ae2bcf Mon Sep 17 00:00:00 2001 From: James Graham Date: Wed, 10 Mar 2021 15:40:10 +0000 Subject: [PATCH] fix: redirect to index if no profile exists New users were sent to profile page before they had a profile --- people/views/person.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/people/views/person.py b/people/views/person.py index 5654a19..0f9e496 100644 --- a/people/views/person.py +++ b/people/views/person.py @@ -5,6 +5,9 @@ Views for displaying or manipulating instances of :class:`Person`. import typing from django.contrib.auth.mixins import LoginRequiredMixin +from django.core.exceptions import ObjectDoesNotExist +from django.http import HttpRequest, HttpResponse +from django.shortcuts import redirect from django.utils import timezone from django.views.generic import CreateView, DetailView, ListView, UpdateView @@ -51,6 +54,14 @@ class ProfileView(LoginRequiredMixin, DetailView): """ model = models.Person + def get(self, request: HttpRequest, *args: typing.Any, **kwargs: typing.Any) -> HttpResponse: + try: + return super().get(request, *args, **kwargs) + + except ObjectDoesNotExist: + # User has no linked Person yet + return redirect('index') + def get_template_names(self) -> typing.List[str]: """Return template depending on level of access.""" if (self.object.user == self.request.user) or self.request.user.is_superuser: