From 57eada1da1b2f51af50dc0736d4e8bcd76ea537a Mon Sep 17 00:00:00 2001 From: Oliver Date: Tue, 8 Aug 2023 15:19:00 +1000 Subject: [PATCH] backport email fix (#5409) - Backport of https://github.com/inventree/InvenTree/pull/5396 --- InvenTree/InvenTree/forms.py | 9 +++++++++ InvenTree/InvenTree/helpers_model.py | 4 +--- InvenTree/InvenTree/settings.py | 2 ++ InvenTree/InvenTree/urls.py | 20 ++++++++++++-------- 4 files changed, 24 insertions(+), 11 deletions(-) diff --git a/InvenTree/InvenTree/forms.py b/InvenTree/InvenTree/forms.py index fb5c37ebdce7..263a9a6cfafa 100644 --- a/InvenTree/InvenTree/forms.py +++ b/InvenTree/InvenTree/forms.py @@ -292,6 +292,15 @@ def send_mail(self, template_prefix, email, context): return False + def get_email_confirmation_url(self, request, emailconfirmation): + """Construct the email confirmation url""" + + from InvenTree.helpers_model import construct_absolute_url + + url = super().get_email_confirmation_url(request, emailconfirmation) + url = construct_absolute_url(url) + return url + class CustomSocialAccountAdapter(CustomUrlMixin, RegistratonMixin, DefaultSocialAccountAdapter): """Override of adapter to use dynamic settings.""" diff --git a/InvenTree/InvenTree/helpers_model.py b/InvenTree/InvenTree/helpers_model.py index 5fa514e6825c..9a2f8fb77a09 100644 --- a/InvenTree/InvenTree/helpers_model.py +++ b/InvenTree/InvenTree/helpers_model.py @@ -50,9 +50,7 @@ def construct_absolute_url(*arg, **kwargs): # Otherwise, try to use the InvenTree setting try: site_url = common.models.InvenTreeSetting.get_setting('INVENTREE_BASE_URL', create=False, cache=False) - except ProgrammingError: - pass - except OperationalError: + except (ProgrammingError, OperationalError): pass if not site_url: diff --git a/InvenTree/InvenTree/settings.py b/InvenTree/InvenTree/settings.py index f8244dfe91be..1d02d493e037 100644 --- a/InvenTree/InvenTree/settings.py +++ b/InvenTree/InvenTree/settings.py @@ -601,6 +601,8 @@ REMOTE_LOGIN = get_boolean_setting('INVENTREE_REMOTE_LOGIN', 'remote_login_enabled', False) REMOTE_LOGIN_HEADER = get_setting('INVENTREE_REMOTE_LOGIN_HEADER', 'remote_login_header', 'REMOTE_USER') +LOGIN_REDIRECT_URL = "/index/" + # sentry.io integration for error reporting SENTRY_ENABLED = get_boolean_setting('INVENTREE_SENTRY_ENABLED', 'sentry_enabled', False) diff --git a/InvenTree/InvenTree/urls.py b/InvenTree/InvenTree/urls.py index 0cf125f32a7e..157fc64ad25b 100644 --- a/InvenTree/InvenTree/urls.py +++ b/InvenTree/InvenTree/urls.py @@ -9,7 +9,8 @@ from django.urls import include, path, re_path from django.views.generic.base import RedirectView -from dj_rest_auth.registration.views import (SocialAccountDisconnectView, +from dj_rest_auth.registration.views import (ConfirmEmailView, + SocialAccountDisconnectView, SocialAccountListView) from drf_spectacular.views import SpectacularAPIView, SpectacularRedocView @@ -74,13 +75,16 @@ # InvenTree information endpoint path('', InfoView.as_view(), name='api-inventree-info'), - # Third party API endpoints - path('auth/', include('dj_rest_auth.urls')), - path('auth/registration/', include('dj_rest_auth.registration.urls')), - path('auth/providers/', SocialProvierListView.as_view(), name='social_providers'), - path('auth/social/', include(social_auth_urlpatterns)), - path('auth/social/', SocialAccountListView.as_view(), name='social_account_list'), - path('auth/social//disconnect/', SocialAccountDisconnectView.as_view(), name='social_account_disconnect'), + # Auth API endpoints + path('auth/', include([ + re_path(r'^registration/account-confirm-email/(?P[-:\w]+)/$', ConfirmEmailView.as_view(), name='account_confirm_email'), + path('registration/', include('dj_rest_auth.registration.urls')), + path('providers/', SocialProvierListView.as_view(), name='social_providers'), + path('social/', include(social_auth_urlpatterns)), + path('social/', SocialAccountListView.as_view(), name='social_account_list'), + path('social//disconnect/', SocialAccountDisconnectView.as_view(), name='social_account_disconnect'), + path('', include('dj_rest_auth.urls')), + ])), # Unknown endpoint re_path(r'^.*$', NotFoundView.as_view(), name='api-404'),