diff -r 306b95944074 -r cb26b3124850 src/hdalab/views/profile.py --- a/src/hdalab/views/profile.py Mon Sep 08 13:03:36 2014 +0200 +++ b/src/hdalab/views/profile.py Mon Sep 08 16:16:14 2014 +0200 @@ -10,10 +10,12 @@ from django.contrib.auth import REDIRECT_FIELD_NAME, login as auth_login from django.contrib.auth.forms import AuthenticationForm from django.contrib.sites.models import get_current_site +from django.core.paginator import Paginator, PageNotAnInteger, EmptyPage from django.core.urlresolvers import reverse from django.db.models import Q from django.http import HttpResponse, HttpResponseBadRequest from django.http import HttpResponseRedirect +from django.http.response import Http404 from django.shortcuts import get_object_or_404, redirect from django.shortcuts import resolve_url from django.template.response import TemplateResponse @@ -34,23 +36,17 @@ import json import uuid - import logging -from django.http.response import Http404 -from django.core.paginator import Paginator, PageNotAnInteger, EmptyPage logger = logging.getLogger(__name__) -class ProfileHome(TemplateView): +class BaseRenkanList(TemplateView): - template_name = "profile_home.html" - - def get_context_data(self, **kwargs): - context = super(ProfileHome, self).get_context_data(**kwargs) + def update_context(self, context, renkan_queryset): sort_param = self.request.GET.get('sort', "date") order_param = self.request.GET.get('order', "desc") - sort = {"date":"renkan__modification_date", "title":"renkan__title", "state":"state"}.get(sort_param) + sort = {"date":"renkan__modification_date", "title":"renkan__title", "state":"state", "user":"renkan__owner__username"}.get(sort_param) if order_param=="desc": order = "-" opposite = "asc" @@ -58,39 +54,7 @@ order = "" opposite = "desc" - rl = HdalabRenkan.objects.select_related("renkan").filter(renkan__owner=self.request.user).order_by(order + sort) - p = Paginator(rl, settings.RENKANS_PER_PAGE) - page_nb = self.request.GET.get('page') - try: - page = p.page(page_nb) - except PageNotAnInteger: - page = p.page(1) - except EmptyPage: - page = p.page(p.num_pages) - - context.update({"page": page, "sort_param":sort_param, "order_param":order_param, "opposite":opposite}) - return context - - -class RenkanPublicList(TemplateView): - - template_name = "renkan_list.html" - - def get_context_data(self, **kwargs): - context = super(RenkanPublicList, self).get_context_data(**kwargs) - #context['renkan_list'] = HdalabRenkan.objects.select_related("renkan").filter(state=HdalabRenkan.PUBLISHED).order_by("-renkan__modification_date") - - sort_param = self.request.GET.get('sort', "date") - order_param = self.request.GET.get('order', "desc") - sort = {"date":"renkan__modification_date", "title":"renkan__title", "state":"state"}.get(sort_param) - if order_param=="desc": - order = "-" - opposite = "asc" - else: - order = "" - opposite = "desc" - - rl = HdalabRenkan.objects.select_related("renkan").filter(state=HdalabRenkan.PUBLISHED).order_by(order + sort) + rl = renkan_queryset.order_by(order + sort) p = Paginator(rl, settings.RENKANS_PER_PAGE) page_nb = self.request.GET.get('page') try: @@ -106,6 +70,23 @@ +class ProfileHome(BaseRenkanList): + + template_name = "profile_home.html" + + def get_context_data(self, **kwargs): + return self.update_context( super(ProfileHome, self).get_context_data(**kwargs), HdalabRenkan.objects.select_related("renkan").filter(renkan__owner=self.request.user) ) + + +class RenkanPublicList(BaseRenkanList): + + template_name = "renkan_list.html" + + def get_context_data(self, **kwargs): + return self.update_context( super(RenkanPublicList, self).get_context_data(**kwargs), HdalabRenkan.objects.select_related("renkan").filter(state=HdalabRenkan.PUBLISHED) ) + + + class RenkanNew(View): def get(self, request):