From ff13937453b5305a2610d9be4972006eea085fa4 Mon Sep 17 00:00:00 2001
From: Lucas Brandstaetter <lucas@brandstaetter.tech>
Date: Mon, 21 Oct 2024 00:59:41 +0000
Subject: [PATCH] Update ConferenceRequiredMixin

Allow staff users to access the conference in the backoffice even if
it is not public.
---
 src/backoffice/views/mixins.py | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/src/backoffice/views/mixins.py b/src/backoffice/views/mixins.py
index 20bd7303b..4fae86fa3 100644
--- a/src/backoffice/views/mixins.py
+++ b/src/backoffice/views/mixins.py
@@ -31,10 +31,14 @@ class ConferenceRequiredMixin(PermissionRequiredMixin):
             if conference_id is None:
                 try:
                     self._conference = Conference.objects.filter(is_public=True).first()
-                    if self._conference is not None:
-                        self.request.session['conference'] = self._conference.slug
                 except Conference.DoesNotExist:
-                    return None
+                    try:
+                        if self.request.user.is_staff:
+                            self._conference = Conference.objects.first()
+                    except Conference.DoesNotExist:
+                        pass
+                if self._conference is not None:
+                    self.request.session['conference'] = self._conference.slug
             else:
                 try:
                     self._conference = Conference.objects.accessible_by_user(self.request.user).get(slug=conference_id)
@@ -74,7 +78,7 @@ class ConferenceRequiredMixin(PermissionRequiredMixin):
 
     def dispatch(self, request, *args, **kwargs):
         if self.require_conference and self.conference is None:
-            return redirect('conference_selection')
+            return redirect('backoffice:conference_selection')
         if not self.has_permission():
             raise PermissionDenied('Insufficient privileges.')
         return super().dispatch(request, *args, **kwargs)
-- 
GitLab