fmartingr
/
shelfzilla
Archived
1
0
Fork 0
This repository has been archived on 2021-06-29. You can view files and clone it, but cannot push or open issues or pull requests.
shelfzilla/shelfzilla/apps/users/views.py

97 lines
2.7 KiB
Python
Raw Normal View History

2014-03-18 17:23:19 +00:00
from django.views.generic import View
from django.template import RequestContext
from django.shortcuts import render_to_response, get_object_or_404
from django.contrib.auth import logout
from django.utils.translation import ugettext as _
2014-04-03 16:55:07 +00:00
from django.http import HttpResponseRedirect, Http404
from django.contrib import messages
from django.contrib.auth import login
from .forms import LoginForm
2014-04-03 16:55:07 +00:00
from .models import User
2014-09-08 16:49:32 +00:00
from shelfzilla.apps.manga.models import UserReadVolume
2014-03-18 17:23:19 +00:00
class LoginView(View):
template = 'users/login.html'
2014-03-18 17:23:19 +00:00
def get(self, request):
if request.user.is_authenticated():
return HttpResponseRedirect('/')
context = {
'login_form': LoginForm()
}
ctx = RequestContext(request, context)
return render_to_response(self.template, context_instance=ctx)
def post(self, request):
if request.user.is_authenticated():
return HttpResponseRedirect('/')
login_form = LoginForm(request.POST)
if login_form.is_valid():
user = login_form.authenticate()
login(request, user)
messages.success(
request,
_('Logged in successfully.')
)
return HttpResponseRedirect('/')
context = {
'login_form': login_form,
}
ctx = RequestContext(request, context)
2014-03-18 17:23:19 +00:00
return render_to_response(self.template, context_instance=ctx)
class LogoutView(View):
def get(self, request):
logout(request)
messages.success(
request,
_('Logged out successfully')
)
return HttpResponseRedirect('/')
2014-04-03 16:55:07 +00:00
class UserProfileView(View):
2014-04-04 13:15:50 +00:00
tempalte = 'users/profile.html'
template_section = 'users/profile/{}.html'
2014-04-03 16:55:07 +00:00
def get(self, request, username, section='summary'):
2014-09-08 16:49:32 +00:00
user = get_object_or_404(User, username=username)
data = {
2014-09-08 16:49:32 +00:00
'item': user,
2014-08-26 16:46:23 +00:00
'section': section
}
if section != 'summary':
template = self.template_section.format(section)
2014-04-03 16:55:07 +00:00
else:
template = self.tempalte
2014-09-08 16:49:32 +00:00
data = self.get_context_from_section(request, section, data, user)
ctx = RequestContext(request, data)
return render_to_response(template, context_instance=ctx)
2014-04-03 16:55:07 +00:00
2014-09-08 16:49:32 +00:00
def get_summary(self, request, context, user):
context['timeline'] = UserReadVolume.objects.filter(user=user).\
order_by('-date')
2014-04-03 16:55:07 +00:00
return context
2014-09-08 16:49:32 +00:00
def get_context_from_section(self, request, section, context, user):
2014-04-03 16:55:07 +00:00
method = getattr(self, 'get_{}'.format(section), None)
if method:
2014-09-08 16:49:32 +00:00
context = method(request, context, user)
2014-04-03 16:55:07 +00:00
return context