29 from django.conf
import settings
30 from django.contrib.sites.models
import RequestSite
31 from django.core.urlresolvers
import reverse
32 from django.http
import Http404, HttpResponseRedirect
33 from django.shortcuts
import render_to_response, redirect
34 from django.template
import RequestContext
35 from django.utils.http
import base36_to_int
36 from django.utils.translation
import ugettext
as _
37 from django.views.decorators.cache
import never_cache
38 from django.views.decorators.csrf
import csrf_protect
40 from common.states
import registration_states
41 from wi.forms.user
import AuthenticationForm, SetPasswordForm, PasswordResetForm, RegistrationForm
42 from wi.utils
import REDIRECT_FIELD_NAME
43 from wi.utils.decorators
import django_view
44 from wi.utils.registration
import register, activate
45 from wi.utils.views
import prep_data
55 def login(request, template_name='auth/login.html', redirect_field_name=REDIRECT_FIELD_NAME,
56 authentication_form=AuthenticationForm):
58 redirect_to = request.REQUEST.get(redirect_field_name,
'')
59 if request.method ==
'POST':
60 form = authentication_form(data=request.POST)
62 from wi.utils.auth
import login
as auth_login
65 if not redirect_to
or ' ' in redirect_to:
66 redirect_to = settings.LOGIN_REDIRECT_URL
72 elif '//' in redirect_to
and re.match(
r'[^\?]*//', redirect_to):
73 redirect_to = settings.LOGIN_REDIRECT_URL
76 user = form.get_user()
77 user.set_password(form.cleaned_data[
'password'])
78 auth_login(request, user)
80 if request.session.test_cookie_worked():
81 request.session.delete_test_cookie()
83 return HttpResponseRedirect(redirect_to)
85 form = authentication_form(request)
87 if (
'user' in request.session):
88 return HttpResponseRedirect(reverse(
'mai_main'))
90 request.session.set_test_cookie()
91 current_site = RequestSite(request)
92 return render_to_response(template_name,
94 redirect_field_name: redirect_to,
96 'site_name': current_site.name},
97 context_instance=RequestContext(request))
105 def logout(request, next_page=None, template_name='auth/logged_out.html', redirect_field_name=REDIRECT_FIELD_NAME):
106 from wi.utils.auth
import logout
as auth_logout
107 auth_logout(request.session)
108 if next_page
is None:
109 redirect_to = request.REQUEST.get(redirect_field_name,
'')
111 return HttpResponseRedirect(redirect_to)
113 return render_to_response(template_name, {
'title': _(
'Logged out')}, context_instance=RequestContext(request))
116 return HttpResponseRedirect(next_page
or request.path)
129 def acc_password_reset(request, template_name='account/password_reset_form.html', password_reset_form=PasswordResetForm):
130 if request.method ==
"POST":
131 form = password_reset_form(request.POST)
134 dictionary = {
'email': form.cleaned_data[
'email'],
'wi_data': settings.WI_DATA}
135 prep_data((
'guest/user/reset_password_mail/', dictionary), request.session)
137 return redirect(
'acc_password_reset_error')
139 return redirect(
'acc_password_reset_done')
141 form = password_reset_form()
143 rest_data =
prep_data(
'guest/user/is_mailer_active/', request.session)
145 return render_to_response(template_name, dict({
'form': form}.items() + rest_data.items()),
146 context_instance=RequestContext(request))
170 template_name=
'account/password_reset_confirm.html',
171 form_class=SetPasswordForm):
172 assert uidb36
is not None and token
is not None
174 uid_int = base36_to_int(uidb36)
178 if request.method ==
'POST':
179 form = form_class(request.POST)
181 dictionary = {
'user_id': uid_int,
'token': token,
'new_password': form.cleaned_data[
'new_password1']}
183 prep_data((
'guest/user/set_password_token/', dictionary), request.session)
185 return redirect(
'acc_password_reset_error_token')
187 return redirect(
'acc_password_reset_complete')
190 prep_data((
'guest/user/check_token/', {
'user_id': uid_int,
'token': token}), request.session)
192 return redirect(
'acc_password_reset_error_token')
195 return render_to_response(template_name, {
'form': form}, context_instance=RequestContext(request))
203 def hlp_help(request, template_name='help/base.html'):
204 rest_data =
prep_data(
'guest/user/is_mailer_active/', request.session)
205 return render_to_response(template_name, rest_data, context_instance=RequestContext(request))
214 request.session[
'django_language'] = lang
215 request.session[
'_language'] = lang
216 request.session.modified =
True
218 return redirect(request.META[
'HTTP_REFERER']
or success_url)
226 def reg_register(request, form_class=RegistrationForm, template_name='registration/registration_form.html'):
227 if request.method ==
'POST':
228 form = form_class(data=request.POST)
230 response =
register(**form.cleaned_data)
232 if response[
'status'] !=
'ok':
234 wi_logger = logging.getLogger(
'wi_logger')
235 wi_logger.error(
'Registration error: %s' % response[
'status'])
236 wi_logger.error(response[
'data'])
238 return redirect(
'registration_error')
240 if response[
'data'][
'registration_state'] == registration_states[
'completed']:
241 return redirect(
'registration_completed')
243 if response[
'data'][
'registration_state'] == registration_states[
'mail_confirmation']:
244 return redirect(
'registration_mail_confirmation')
246 if response[
'data'][
'registration_state'] == registration_states[
'admin_confirmation']:
247 return redirect(
'registration_admin_confirmation')
251 return render_to_response(template_name, {
'form': form}, RequestContext(request))
262 if act_response[
'data'][
'registration_state'] == registration_states[
'completed']:
263 return redirect(
'activation_completed')
265 if act_response[
'data'][
'registration_state'] == registration_states[
'admin_confirmation']:
266 return redirect(
'activation_admin_confirmation')
268 return redirect(
'activation_error')