From 75255dcf83c73f044948e78e7c245e2baa72b894 Mon Sep 17 00:00:00 2001 From: Arnav Angarkar Date: Sat, 15 Nov 2025 22:34:13 +0530 Subject: [PATCH 1/3] Speaker acceptance email confirmation link returning 500 error --- app/eventyay/cfp/views/user.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/eventyay/cfp/views/user.py b/app/eventyay/cfp/views/user.py index 2cb9a25d5d..67a0ffc443 100644 --- a/app/eventyay/cfp/views/user.py +++ b/app/eventyay/cfp/views/user.py @@ -219,6 +219,9 @@ def get_object(self): def dispatch(self, request, *args, **kwargs): if request.user.is_anonymous: return get_login_redirect(request) + self.request = request + self.args = args + self.kwargs = kwargs if not request.user.has_perm('base.is_speaker_submission', self.submission): self.template_name = 'cfp/event/user_submission_confirm_error.html' return super().dispatch(request, *args, **kwargs) From 53443bdd1c69fd58d692225257e1936c10d4b42c Mon Sep 17 00:00:00 2001 From: Arnav Angarkar Date: Sat, 15 Nov 2025 23:59:29 +0530 Subject: [PATCH 2/3] refactoring as said by copilot to use cleaner dispatch pattern for permission check --- app/eventyay/cfp/views/user.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/app/eventyay/cfp/views/user.py b/app/eventyay/cfp/views/user.py index 67a0ffc443..f043aa75dd 100644 --- a/app/eventyay/cfp/views/user.py +++ b/app/eventyay/cfp/views/user.py @@ -219,12 +219,11 @@ def get_object(self): def dispatch(self, request, *args, **kwargs): if request.user.is_anonymous: return get_login_redirect(request) - self.request = request - self.args = args - self.kwargs = kwargs + # Call super().dispatch() first to properly initialize request attributes + response = super().dispatch(request, *args, **kwargs) if not request.user.has_perm('base.is_speaker_submission', self.submission): self.template_name = 'cfp/event/user_submission_confirm_error.html' - return super().dispatch(request, *args, **kwargs) + return response @cached_property def speaker_profile(self): From bf481dc4d7365fb73c81a1f35fd44c1e7c9eeea2 Mon Sep 17 00:00:00 2001 From: Arnav Angarkar Date: Sun, 16 Nov 2025 00:11:03 +0530 Subject: [PATCH 3/3] Revert to manual initialization - correct fix --- app/eventyay/cfp/views/user.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/app/eventyay/cfp/views/user.py b/app/eventyay/cfp/views/user.py index f043aa75dd..2126f7064b 100644 --- a/app/eventyay/cfp/views/user.py +++ b/app/eventyay/cfp/views/user.py @@ -219,11 +219,16 @@ def get_object(self): def dispatch(self, request, *args, **kwargs): if request.user.is_anonymous: return get_login_redirect(request) - # Call super().dispatch() first to properly initialize request attributes - response = super().dispatch(request, *args, **kwargs) + + # Initialize request attributes before accessing self.submission + # to avoid AttributeError when submission property tries to access self.request/self.kwargs + self.request = request + self.args = args + self.kwargs = kwargs + if not request.user.has_perm('base.is_speaker_submission', self.submission): self.template_name = 'cfp/event/user_submission_confirm_error.html' - return response + return super().dispatch(request, *args, **kwargs) @cached_property def speaker_profile(self):