little factorisation
authorcavaliet
Mon, 08 Sep 2014 16:16:14 +0200
changeset 332 cb26b3124850
parent 331 306b95944074
child 333 651a76531f59
little factorisation
src/hdalab/views/editorial.py
src/hdalab/views/profile.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):
--- 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):