55from django .urls import reverse
66from django .utils import timezone
77
8- from recoco .apps .addressbook import models as addressbook_models
98from recoco .apps .home .models import SiteConfiguration
109from recoco .apps .projects import signals as projects_signals
1110from recoco .apps .projects .utils import (
@@ -54,7 +53,7 @@ def invite_accept(request, invite_id):
5453 pass
5554
5655 if request .method == "POST" :
57- form = forms .InviteAcceptForm (request .POST )
56+ form = forms .InviteAcceptForm (request .POST , invite = invite , site = current_site )
5857 user = None
5958
6059 if existing_account :
@@ -63,61 +62,49 @@ def invite_accept(request, invite_id):
6362 user = request .user
6463
6564 # New account
66- else :
65+ elif request . user . is_authenticated :
6766 # we shouldn't be logged in at this point
68- if request .user .is_authenticated :
69- return HttpResponseForbidden ()
67+ return HttpResponseForbidden ()
7068
71- if form .is_valid ():
72- user = auth_models .User .objects .create (
73- username = invite .email ,
74- email = invite .email ,
75- first_name = form .cleaned_data .get ("first_name" ),
76- last_name = form .cleaned_data .get ("last_name" ),
77- )
69+ elif form .is_valid ():
70+ user = form .save ()
71+ login (request , user , backend = "django.contrib.auth.backends.ModelBackend" )
7872
79- org_name = form . cleaned_data . get ( "organization" )
80- organization = addressbook_models . Organization . get_or_create ( org_name )
81- organization . sites . add (request . site )
73+ else :
74+ # Form invalid for new account: re-render with errors
75+ return render (request , "invites/invite_details.html" , locals () )
8276
83- user . profile . organization = organization
84- user . profile . organization_position = form . cleaned_data . get ( "position" )
77+ if not user :
78+ return redirect ( reverse ( "invites-invite-details" , args = ( invite . pk ,)) )
8579
86- user .profile .save ()
80+ # user now has access to site
81+ user .profile .sites .add (current_site )
8782
88- login (
89- request , user , backend = "django.contrib.auth.backends.ModelBackend"
83+ # Now, grant the user her new rights
84+ if invite .role == "SWITCHTENDER" :
85+ if assign_advisor (user , project , current_site ):
86+ projects_signals .project_switchtender_joined .send (
87+ sender = request .user , project = project
88+ )
89+ elif invite .role == "OBSERVER" :
90+ if assign_observer (user , project , current_site ):
91+ projects_signals .project_observer_joined .send (
92+ sender = request .user , project = project
9093 )
94+ else :
95+ if assign_collaborator (user , project ):
96+ projects_signals .project_member_joined .send (
97+ sender = request .user , project = project
98+ )
99+ elif project .owner == user :
100+ projects_signals .project_owner_joined .send (
101+ sender = request .user , project = project
102+ )
103+
104+ invite .accepted_on = timezone .now ()
105+ invite .save ()
91106
92- if user :
93- # user now has access to site
94- user .profile .sites .add (current_site )
95-
96- # Now, grant the user her new rights
97- if invite .role == "SWITCHTENDER" :
98- if assign_advisor (user , project , current_site ):
99- projects_signals .project_switchtender_joined .send (
100- sender = request .user , project = project
101- )
102- elif invite .role == "OBSERVER" :
103- if assign_observer (user , project , current_site ):
104- projects_signals .project_observer_joined .send (
105- sender = request .user , project = project
106- )
107- else :
108- if assign_collaborator (user , project ):
109- projects_signals .project_member_joined .send (
110- sender = request .user , project = project
111- )
112- elif project .owner == user :
113- projects_signals .project_owner_joined .send (
114- sender = request .user , project = project
115- )
116-
117- invite .accepted_on = timezone .now ()
118- invite .save ()
119-
120- return redirect (project .get_absolute_url ())
107+ return redirect (project .get_absolute_url ())
121108
122109 return redirect (reverse ("invites-invite-details" , args = (invite .pk ,)))
123110
@@ -179,6 +166,6 @@ def invite_details(request, invite_id):
179166 + reverse ("invites-invite-details" , args = (invite .pk ,))
180167 )
181168
182- form = forms .InviteAcceptForm (request .GET or None )
169+ form = forms .InviteAcceptForm (request .GET or None , invite = invite , site = request . site )
183170
184171 return render (request , "invites/invite_details.html" , locals ())
0 commit comments