Commit 80b68d86a46f8437300d622be5b142b4c881d5fc

Authored by Lucas Kanashiro
Committed by Sergio Oliveira
1 parent eff7a486

Handling user creation with(out) browserid

Signed-off-by: Alexandre Barbosa <alexandreab@live.com>
Signed-off-by: Carlos Oliveira <carlospecter@gmail.com>
Signed-off-by: Lucas Kanashiro <kanashiroduarte@gmail.com>
Showing 1 changed file with 22 additions and 16 deletions   Show diff stats
colab/accounts/views.py
@@ -22,7 +22,6 @@ from haystack.query import SearchQuerySet @@ -22,7 +22,6 @@ from haystack.query import SearchQuerySet
22 22
23 from colab.super_archives.models import EmailAddress, Message, EmailAddressValidation 23 from colab.super_archives.models import EmailAddress, Message, EmailAddressValidation
24 from colab.search.utils import trans 24 from colab.search.utils import trans
25 -from colab.settings import BROWSERID_ENABLED  
26 # from proxy.trac.models import WikiCollabCount, TicketCollabCount 25 # from proxy.trac.models import WikiCollabCount, TicketCollabCount
27 from .forms import (UserCreationForm, ListsForm, UserUpdateForm, 26 from .forms import (UserCreationForm, ListsForm, UserUpdateForm,
28 ChangeXMPPPasswordForm) 27 ChangeXMPPPasswordForm)
@@ -129,19 +128,21 @@ class UserProfileDetailView(UserProfileBaseMixin, DetailView): @@ -129,19 +128,21 @@ class UserProfileDetailView(UserProfileBaseMixin, DetailView):
129 128
130 129
131 def signup(request): 130 def signup(request):
132 - # TODO: Refactor  
133 -  
134 user = request.user 131 user = request.user
135 - # If the user is not authenticated in Persona, and try to access url  
136 - # /account/register/ then he will be redirected to login page.  
137 - if not user.is_authenticated():  
138 - return redirect('login')  
139 -  
140 - # If the user is authenticated in Persona, already register in Colab  
141 - # and try to access directly "/account/register/", then he will be redirect  
142 - # to user profile.  
143 - if not user.needs_update:  
144 - return redirect('user_profile', username=user.username) 132 + BROWSERID_ENABLED = getattr(settings, 'BROWSERID_ENABLED', False)
  133 +
  134 + if BROWSERID_ENABLED:
  135 + # If the user is not authenticated, redirect to login
  136 + if not request.user.is_authenticated():
  137 + return redirect('login')
  138 +
  139 + if request.user.is_authenticated():
  140 + # If the user doesn't need to update its main data,
  141 + # redirect to its profile
  142 + # It happens when user is created by browserid
  143 + # and didn't set his/her main data
  144 + if not request.user.needs_update:
  145 + return redirect('user_profile', username=request.user.username)
145 146
146 # If the user is authenticated in Persona, but not in the Colab then he 147 # If the user is authenticated in Persona, but not in the Colab then he
147 # will be redirected to the register form. 148 # will be redirected to the register form.
@@ -152,7 +153,10 @@ def signup(request): @@ -152,7 +153,10 @@ def signup(request):
152 return render(request, 'accounts/user_create_form.html', 153 return render(request, 'accounts/user_create_form.html',
153 {'user_form': user_form, 'lists_form': lists_form}) 154 {'user_form': user_form, 'lists_form': lists_form})
154 155
155 - user_form = UserCreationForm(request.POST, instance=user) 156 + if BROWSERID_ENABLED:
  157 + user_form = UserCreationForm(request.POST, instance=request.user)
  158 + else:
  159 + user_form = UserCreationFormNoBrowserId(request.POST)
156 lists_form = ListsForm(request.POST) 160 lists_form = ListsForm(request.POST)
157 161
158 if not user_form.is_valid() or not lists_form.is_valid(): 162 if not user_form.is_valid() or not lists_form.is_valid():
@@ -161,11 +165,13 @@ def signup(request): @@ -161,11 +165,13 @@ def signup(request):
161 165
162 user = user_form.save(commit=False) 166 user = user_form.save(commit=False)
163 user.needs_update = False 167 user.needs_update = False
  168 +
164 if not BROWSERID_ENABLED: 169 if not BROWSERID_ENABLED:
165 user.is_active = False 170 user.is_active = False
  171 + user.save()
166 EmailAddressValidation.create(user.email, user) 172 EmailAddressValidation.create(user.email, user)
167 -  
168 - user.save() 173 + else:
  174 + user.save()
169 175
170 # Check if the user's email have been used previously 176 # Check if the user's email have been used previously
171 # in the mainling lists to link the user to old messages 177 # in the mainling lists to link the user to old messages