11import logging
22from urllib .parse import unquote
33
4- from allauth .account .views import LoginView as AllauthLoginView
4+ from allauth .account .views import LoginView as AllauthLoginView , SignupView as AllauthSignupView
55from django .contrib .auth import REDIRECT_FIELD_NAME
66from django .contrib .auth import logout
77from django .contrib .auth .decorators import login_required
88from django .db import OperationalError , ProgrammingError
99from django .shortcuts import render , redirect
1010from django .contrib import messages
1111from interfaces .account .forms import ProfileForm , DeleteAccountForm
12+ from interfaces .account .navigation import get_account_return_to
1213from domains .iam .services import AccountService
1314
1415
@@ -38,23 +39,37 @@ def dispatch(self, request, *args, **kwargs):
3839 request .GET = _normalize_redirect_field (request .GET )
3940 if request .method == "POST" :
4041 request .POST = _normalize_redirect_field (request .POST )
42+ get_account_return_to (request )
43+ return super ().dispatch (request , * args , ** kwargs )
44+
45+
46+ class SignupView (AllauthSignupView ):
47+ def dispatch (self , request , * args , ** kwargs ):
48+ request .GET = _normalize_redirect_field (request .GET )
49+ if request .method == "POST" :
50+ request .POST = _normalize_redirect_field (request .POST )
51+ get_account_return_to (request )
4152 return super ().dispatch (request , * args , ** kwargs )
4253
4354
4455login = LoginView .as_view ()
56+ signup = SignupView .as_view ()
4557
4658
4759@login_required
4860def profile (request ):
4961 user = request .user
62+ return_to = get_account_return_to (request )
5063 return render (request , "account/profile.html" , {
5164 "user" : user ,
5265 "organization" : user .organization ,
66+ "return_to" : return_to ,
5367 })
5468
5569
5670@login_required
5771def profile_edit (request ):
72+ return_to = get_account_return_to (request )
5873 if request .method == "POST" :
5974 form = ProfileForm (request .POST , instance = request .user )
6075 if form .is_valid ():
@@ -64,18 +79,20 @@ def profile_edit(request):
6479 else :
6580 form = ProfileForm (instance = request .user )
6681
67- return render (request , "account/profile_edit.html" , {"form" : form })
82+ return render (request , "account/profile_edit.html" , {"form" : form , "return_to" : return_to })
6883
6984
7085@login_required
7186def unavailable_account_management (request ):
87+ get_account_return_to (request )
7288 messages .info (request , "That account management page is not available in this HydroServer instance." )
7389 return redirect ("account_profile" )
7490
7591
7692@login_required
7793def delete_account (request ):
7894 user = request .user
95+ return_to = get_account_return_to (request )
7996 owned_workspaces = []
8097 try :
8198 from domains .iam .models import Workspace
@@ -99,4 +116,5 @@ def delete_account(request):
99116 return render (request , "account/delete_account.html" , {
100117 "form" : form ,
101118 "owned_workspaces" : owned_workspaces ,
119+ "return_to" : return_to ,
102120 })
0 commit comments