117 "url" : profile.url, |
116 "url" : profile.url, |
118 "about" : profile.about, |
117 "about" : profile.about, |
119 }) |
118 }) |
120 |
119 |
121 return render_to_response(template_name, RequestContext(request, { |
120 return render_to_response(template_name, RequestContext(request, { |
122 "form": form |
121 'params': {'scope': scope}, |
|
122 'form': form |
123 })) |
123 })) |
124 |
124 |
125 def login(request, scope, template_name="user/login.html"): |
125 def login(request, scope, template_name="user/login.html"): |
126 """Custom view to login or register/login a user. |
126 """Custom view to login or register/login a user. |
127 Integration of register and login form |
127 Integration of register and login form |
128 It uses Django's standard AuthenticationForm, though. |
128 It uses Django's standard AuthenticationForm, though. |
129 """ |
129 """ |
|
130 |
130 user = request.user |
131 user = request.user |
131 if user.is_authenticated(): |
132 if user.is_authenticated(): |
132 redirect_to = reverse("scipycon_account", kwargs={'scope': scope}) |
133 redirect_to = reverse("scipycon_account", kwargs={'scope': scope}) |
133 return set_message_cookie(redirect_to, |
134 return set_message_cookie(redirect_to, |
134 msg = u"Redirected to account from login form.") |
135 msg = u"Redirected to account from login form.") |
142 |
143 |
143 if login_form.is_valid(): |
144 if login_form.is_valid(): |
144 redirect_to = request.POST.get("next") |
145 redirect_to = request.POST.get("next") |
145 # Light security check -- make sure redirect_to isn't garbage. |
146 # Light security check -- make sure redirect_to isn't garbage. |
146 if not redirect_to or '//' in redirect_to or ' ' in redirect_to: |
147 if not redirect_to or '//' in redirect_to or ' ' in redirect_to: |
147 redirect_to = reverse("scipycon_account") |
148 redirect_to = reverse('scipycon_account', |
|
149 kwargs={'scope': scope}) |
148 |
150 |
149 from django.contrib.auth import login |
151 from django.contrib.auth import login |
150 login(request, login_form.get_user()) |
152 login(request, login_form.get_user()) |
151 |
153 |
152 return set_message_cookie(redirect_to, msg = u"You have been logged in.") |
154 return set_message_cookie(redirect_to, msg = u"You have been logged in.") |
157 |
159 |
158 user = scipycon_createuser(request, register_form.data, scope) |
160 user = scipycon_createuser(request, register_form.data, scope) |
159 |
161 |
160 redirect_to = request.POST.get("next") |
162 redirect_to = request.POST.get("next") |
161 if not redirect_to or '//' in redirect_to or ' ' in redirect_to: |
163 if not redirect_to or '//' in redirect_to or ' ' in redirect_to: |
162 redirect_to = reverse("scipycon_account") |
164 redirect_to = reverse('scipycon_account', |
|
165 kwargs={'scope': scope}) |
163 |
166 |
164 return set_message_cookie( |
167 return set_message_cookie( |
165 redirect_to, msg = u"You have been registered and logged in.") |
168 redirect_to, msg = u"You have been registered and logged in.") |
166 |
169 |
167 # Get next_url |
170 # Get next_url |
168 next_url = request.REQUEST.get("next") |
171 next_url = request.REQUEST.get("next") |
169 if next_url is None: |
172 if next_url is None: |
170 next_url = request.META.get("HTTP_REFERER") |
173 next_url = request.META.get("HTTP_REFERER") |
171 if next_url is None: |
174 if next_url is None: |
172 next_url = reverse("scipycon_account") |
175 next_url = reverse('scipycon_account', kwargs={'scope': scope}) |
173 # Get just the path of the url. See django.contrib.auth.views.login for more |
176 |
|
177 # Get just the path of the url. |
|
178 # See django.contrib.auth.views.login for more |
174 next_url = urlparse(next_url) |
179 next_url = urlparse(next_url) |
175 next_url = next_url[2] |
180 next_url = next_url[2] |
176 |
181 |
177 try: |
182 try: |
178 login_form_errors = login_form.errors["__all__"] |
183 login_form_errors = login_form.errors["__all__"] |
191 """Custom method to logout a user. |
196 """Custom method to logout a user. |
192 |
197 |
193 The reason to use a custom logout method is just to provide a login and a |
198 The reason to use a custom logout method is just to provide a login and a |
194 logoutmethod on one place. |
199 logoutmethod on one place. |
195 """ |
200 """ |
|
201 |
196 from django.contrib.auth import logout |
202 from django.contrib.auth import logout |
197 logout(request) |
203 logout(request) |
198 |
204 |
199 redirect_to = '/' |
205 redirect_to = '/%s' % (scope) |
200 return set_message_cookie(redirect_to, msg = u"You have been logged out.") |
206 return set_message_cookie(redirect_to, msg = u"You have been logged out.") |
201 |
207 |
202 @login_required |
208 @login_required |
203 def password(request, scope, template_name="user/password.html"): |
209 def password(request, scope, template_name='user/password.html'): |
204 """Changes the password of current user. |
210 """Changes the password of current user. |
205 """ |
211 """ |
206 if request.method == "POST": |
212 |
|
213 if request.method == 'POST': |
207 form = PasswordChangeForm(request.user, request.POST) |
214 form = PasswordChangeForm(request.user, request.POST) |
208 if form.is_valid(): |
215 if form.is_valid(): |
209 form.save() |
216 form.save() |
210 redirect_to = reverse("scipycon_account") |
217 redirect_to = reverse('scipycon_account', kwargs={'scope': scope}) |
211 return set_message_cookie(redirect_to, |
218 return set_message_cookie(redirect_to, |
212 msg = u"Your password has been changed.") |
219 msg = u'Your password has been changed.') |
213 else: |
220 else: |
214 form = PasswordChangeForm(request.user) |
221 form = PasswordChangeForm(request.user) |
215 |
222 |
216 return render_to_response(template_name, RequestContext(request, { |
223 return render_to_response(template_name, RequestContext(request, { |
217 'params': {'scope': scope}, |
224 'params': {'scope': scope}, |
218 'form' : form |
225 'form' : form |
219 })) |
226 })) |
220 |
227 |
221 @login_required |
228 @login_required |
222 def username(request, scope, template_name="user/username.html"): |
229 def username(request, scope, template_name='user/username.html'): |
223 """Saves the username from the data form. |
230 """Saves the username from the data form. |
224 """ |
231 """ |
225 if request.method == "POST": |
232 if request.method == 'POST': |
226 username_form = UsernameForm(initial={"username" : request.user.username}, data=request.POST) |
233 username_form = UsernameForm( |
|
234 initial={'username' : request.user.username}, |
|
235 data=request.POST) |
227 if username_form.is_valid(): |
236 if username_form.is_valid(): |
228 request.user.username = username_form.cleaned_data.get("username") |
237 request.user.username = username_form.cleaned_data.get("username") |
229 request.user.save() |
238 request.user.save() |
230 redirect_to = reverse("scipycon_account") |
239 redirect_to = reverse('scipycon_account', |
|
240 kwargs={'scope': scope}) |
231 return set_message_cookie(redirect_to, |
241 return set_message_cookie(redirect_to, |
232 msg = u"Your username has been changed.") |
242 msg = u"Your username has been changed.") |
233 else: |
243 else: |
234 username_form = UsernameForm(initial={"username" : request.user.username}) |
244 username_form = UsernameForm(initial={"username" : request.user.username}) |
235 |
245 |
236 return render_to_response(template_name, RequestContext(request, { |
246 return render_to_response(template_name, RequestContext(request, { |
237 "form": username_form |
247 'params': {'scope': scope}, |
|
248 'form': username_form |
238 })) |
249 })) |
239 |
250 |
240 |
251 |
241 def get_usernames(request, scope): |
252 def get_usernames(request, scope): |
242 """Returns in json the list of ten possible usernames |
253 """Returns in json the list of ten possible usernames |