summaryrefslogtreecommitdiffstats
path: root/hyperkitty/views/accounts.py
diff options
context:
space:
mode:
Diffstat (limited to 'hyperkitty/views/accounts.py')
-rw-r--r--hyperkitty/views/accounts.py114
1 files changed, 114 insertions, 0 deletions
diff --git a/hyperkitty/views/accounts.py b/hyperkitty/views/accounts.py
new file mode 100644
index 0000000..3154563
--- /dev/null
+++ b/hyperkitty/views/accounts.py
@@ -0,0 +1,114 @@
+# -*- coding: utf-8 -*-
+# Copyright (C) 1998-2012 by the Free Software Foundation, Inc.
+#
+# This file is part of HyperKitty.
+#
+# HyperKitty 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 3 of the License, or (at your option)
+# any later version.
+#
+# HyperKitty 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
+# HyperKitty. If not, see <http://www.gnu.org/licenses/>.
+#
+# Author: Aamir Khan <syst3m.w0rm@gmail.com>
+#
+
+import re
+import sys
+
+from django.conf import settings
+from django.contrib import messages
+from django.contrib.auth import logout, authenticate, login
+from django.contrib.auth.decorators import (login_required,
+ permission_required,
+ user_passes_test)
+from django.contrib.auth.forms import AuthenticationForm
+from gsoc.models import UserProfile
+from django.contrib.auth.models import User
+from django.core.urlresolvers import reverse
+from django.http import HttpResponse, HttpResponseRedirect
+from django.shortcuts import render_to_response, redirect
+from django.template import Context, loader, RequestContext
+from django.utils.translation import gettext as _
+from urllib2 import HTTPError
+from urlparse import urlparse
+
+from forms import RegistrationForm
+from gsoc.utils import log
+
+def user_logout(request):
+ logout(request)
+ return redirect('user_login')
+
+def user_login(request,template = 'login.html'):
+
+ parse_r = urlparse(request.META.get('HTTP_REFERER', 'index'))
+ previous = '%s%s' % (parse_r.path, parse_r.query)
+
+ next_var = request.POST.get('next', request.GET.get('next', previous))
+
+ if request.method == 'POST':
+ form = AuthenticationForm(request.POST)
+ user = authenticate(username=request.POST.get('username'),
+ password=request.POST.get('password'))
+
+ if user is not None:
+ log('debug', user)
+ if user.is_active:
+ login(request,user)
+ return redirect(next_var)
+
+ else:
+ form = AuthenticationForm()
+ return render_to_response(template, {'form': form, 'next' : next_var},
+ context_instance=RequestContext(request))
+
+@login_required
+def user_profile(request, user_email = None):
+ if not request.user.is_authenticated():
+ return redirect('user_login')
+ # try to render the user profile.
+ try:
+ user_profile = request.user.get_profile()
+ # @TODO: Include the error name e.g, ProfileDoesNotExist?
+ except:
+ user_profile = UserProfile.objects.create(user=request.user)
+
+ t = loader.get_template('user_profile.html')
+
+ c = RequestContext(request, {
+ 'user_profile' : user_profile,
+ })
+
+ return HttpResponse(t.render(c))
+
+
+def user_registration(request):
+ if request.user.is_authenticated():
+ # Already registered, redirect back to index page
+ return redirect('index')
+
+ if request.POST:
+ form = RegistrationForm(request.POST)
+ if form.is_valid():
+ # Save the user data.
+ form.save(form.cleaned_data)
+ user = authenticate(username=form.cleaned_data['username'],
+ password=form.cleaned_data['password1'])
+
+ if user is not None:
+ log('debug', user)
+ if user.is_active:
+ login(request,user)
+ return redirect('index')
+ else:
+ form = RegistrationForm()
+
+ return render_to_response('register.html', {'form': form}, context_instance=RequestContext(request))
+