Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/Pootle-2.0.0/local_apps/pootle_app/views/index/login.py
diff options
context:
space:
mode:
Diffstat (limited to 'Pootle-2.0.0/local_apps/pootle_app/views/index/login.py')
-rw-r--r--Pootle-2.0.0/local_apps/pootle_app/views/index/login.py84
1 files changed, 84 insertions, 0 deletions
diff --git a/Pootle-2.0.0/local_apps/pootle_app/views/index/login.py b/Pootle-2.0.0/local_apps/pootle_app/views/index/login.py
new file mode 100644
index 0000000..cfc32fa
--- /dev/null
+++ b/Pootle-2.0.0/local_apps/pootle_app/views/index/login.py
@@ -0,0 +1,84 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+#
+# Copyright 2009 Zuza Software Foundation
+#
+# This file is part of Pootle.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, see <http://www.gnu.org/licenses/>.
+
+from translate.lang import data
+
+from django import forms
+from django.utils.translation import ugettext as _
+from django.conf import settings
+from django.contrib.auth import REDIRECT_FIELD_NAME, login
+from django.contrib.auth.forms import AuthenticationForm
+from django.shortcuts import render_to_response
+from django.template import RequestContext
+from django.utils.encoding import iri_to_uri
+from django.utils.http import urlquote
+
+from pootle.i18n.override import lang_choices
+
+from pootle_misc.baseurl import redirect
+
+def redirect_after_login(request):
+ redirect_to = request.REQUEST.get(REDIRECT_FIELD_NAME, None)
+ if redirect_to is None or '://' in redirect_to or ' ' in redirect_to:
+ redirect_to = iri_to_uri('/accounts/%s/' % urlquote(request.user.username))
+ return redirect(redirect_to)
+
+
+def language_list(request):
+ """returns the list of localised language names, with 'default'"""
+ tr_default = _("Default")
+ if tr_default != "Default":
+ tr_default = u"%s | \u202dDefault" % tr_default
+
+ choices = lang_choices()
+ choices.insert(0, ('', tr_default))
+ return choices
+
+
+
+def view(request):
+ class LangAuthenticationForm(AuthenticationForm):
+ language = forms.ChoiceField(label=_('Interface Language'), choices=language_list(request),
+ initial="", required=False)
+
+ if request.user.is_authenticated():
+ return redirect_after_login(request)
+ else:
+ if request.POST:
+ form = LangAuthenticationForm(request, data=request.POST)
+ # do login here
+ if form.is_valid():
+ login(request, form.get_user())
+
+ if request.session.test_cookie_worked():
+ request.session.delete_test_cookie()
+
+ language = request.POST.get('language')
+ request.session['django_language'] = language
+ response = redirect_after_login(request)
+ return response
+ else:
+ form = LangAuthenticationForm(request)
+ request.session.set_test_cookie()
+ context = {
+ 'form': form
+ }
+ return render_to_response("index/login.html", context, context_instance=RequestContext(request))
+