29 from django.contrib.sites.models
import RequestSite
30 from django.http
import HttpResponseRedirect
31 from django.shortcuts
import render_to_response
32 from django.template
import RequestContext
33 from django.utils.translation
import ugettext
as _
35 from wi
import settings
as wi_settings
36 from wi.forms.user
import CMAuthenticationForm
37 from wi.utils
import REDIRECT_FIELD_NAME
38 from wi.utils.auth
import cm_login, cm_logout
39 from wi.utils.decorators
import django_view, user_permission
40 from wi.utils.views
import prep_data
49 def cma_login(request, template_name='admin_cm/login.html',
50 redirect_field_name=REDIRECT_FIELD_NAME,
51 authentication_form=CMAuthenticationForm):
52 rest_data =
prep_data({
'cms':
'guest/cluster/list_names/'}, request.session)
54 redirect_to = request.REQUEST.get(redirect_field_name,
'')
55 if request.method ==
'POST':
56 form = authentication_form(request, data=request.POST, rest_data=rest_data)
58 if not redirect_to
or ' ' in redirect_to:
59 redirect_to = wi_settings.LOGIN_REDIRECT_URL
65 elif '//' in redirect_to
and re.match(
r'[^\?]*//', redirect_to):
66 redirect_to = wi_settings.LOGIN_REDIRECT_URL
69 cm_passwd = form.cleaned_data[
'password']
70 cm_id = form.cleaned_data[
'cm']
72 cm_login(request.session, cm_passwd, cm_id)
74 if redirect_to ==
'/':
75 redirect_to =
'/admin_cm/'
76 return HttpResponseRedirect(redirect_to)
78 form = authentication_form(request, rest_data=rest_data)
80 request.session.set_test_cookie()
81 current_site = RequestSite(request)
82 return render_to_response(template_name,
84 redirect_field_name: redirect_to,
86 'site_name': current_site.name},
87 context_instance=RequestContext(request))
97 template_name=
'admin_cm/logged_out.html',
98 redirect_field_name=REDIRECT_FIELD_NAME):
100 if next_page
is None:
101 redirect_to = request.REQUEST.get(redirect_field_name,
'')
103 return HttpResponseRedirect(redirect_to)
105 return render_to_response(template_name,
106 {
'title': _(
'Logged out')},
107 context_instance=RequestContext(request))
110 return HttpResponseRedirect(next_page
or request.path)