# HG changeset patch # User cavaliet # Date 1410185774 -7200 # Node ID cb26b312485046ed09792a68de16b0af72bbd6ec # Parent 306b95944074b55c12b2954c5c9997b647dd6ec0 little factorisation diff -r 306b95944074 -r cb26b3124850 src/hdalab/views/editorial.py --- a/src/hdalab/views/editorial.py Mon Sep 08 13:03:36 2014 +0200 +++ b/src/hdalab/views/editorial.py Mon Sep 08 16:16:14 2014 +0200 @@ -5,45 +5,19 @@ @author: tc ''' -from django.views.generic import TemplateView from hdalab.models.renkan import HdalabRenkan from hdabo.views import Folders, AddOrUpdateFolder, DeleteFolder +from hdalab.views.profile import BaseRenkanList import logging -from django.core.paginator import Paginator, PageNotAnInteger, EmptyPage -from django.conf import settings logger = logging.getLogger(__name__) -class ManageRenkans(TemplateView): +class ManageRenkans(BaseRenkanList): template_name = "editorial/manage_renkans.html" def get_context_data(self, **kwargs): - context = super(ManageRenkans, self).get_context_data(**kwargs) - - 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", "user":"renkan__owner__username"}.get(sort_param) - if order_param=="desc": - order = "-" - opposite = "asc" - else: - order = "" - opposite = "desc" - - rl = HdalabRenkan.objects.exclude(state=HdalabRenkan.EDITION).select_related("renkan", "renkan__owner").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 + return self.update_context(super(ManageRenkans, self).get_context_data(**kwargs), HdalabRenkan.objects.exclude(state=HdalabRenkan.EDITION).select_related("renkan", "renkan__owner")) class HdalabFolders(Folders): 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):