From 9f3f592b6817bbac36a881f0ba1ebc9e510892b2 Mon Sep 17 00:00:00 2001 From: Valentin Deniaud Date: Tue, 10 Dec 2019 16:48:16 +0100 Subject: [PATCH] views: add pagination to visualizations list (#27410) --- bijoe/settings.py | 2 ++ .../templates/bijoe/visualizations_list.html | 1 + bijoe/views.py | 20 +++++++++++++------ bijoe/visualization/views.py | 6 ++++++ tests/settings.py | 1 + 5 files changed, 24 insertions(+), 6 deletions(-) diff --git a/bijoe/settings.py b/bijoe/settings.py index 91dac42..2a57b61 100644 --- a/bijoe/settings.py +++ b/bijoe/settings.py @@ -172,5 +172,7 @@ BIJOE_SCHEMAS = [] BIJOE_CACHE = True +PAGE_LENGTH = 20 + if 'BIJOE_SETTINGS_FILE' in os.environ: execfile(os.environ['BIJOE_SETTINGS_FILE']) diff --git a/bijoe/templates/bijoe/visualizations_list.html b/bijoe/templates/bijoe/visualizations_list.html index dc89c98..f68c424 100644 --- a/bijoe/templates/bijoe/visualizations_list.html +++ b/bijoe/templates/bijoe/visualizations_list.html @@ -9,3 +9,4 @@ {% endfor %} +{% include "gadjo/pagination.html" %} diff --git a/bijoe/views.py b/bijoe/views.py index 12c3569..3d4f732 100644 --- a/bijoe/views.py +++ b/bijoe/views.py @@ -17,9 +17,10 @@ import json import urllib +from django.conf import settings from django.shortcuts import resolve_url from django.core.urlresolvers import reverse -from django.views.generic import TemplateView, View +from django.views.generic import ListView, View from django.http import HttpResponse, HttpResponseRedirect from django.utils.translation import ugettext as _ from django.contrib.auth import logout as auth_logout @@ -54,20 +55,27 @@ class AuthorizationMixin(object): return redirect_to_login(request.build_absolute_uri()) -class HomepageView(AuthorizationMixin, TemplateView): +class HomepageView(AuthorizationMixin, ListView): template_name = 'bijoe/homepage.html' + model = Visualization + context_object_name = 'visualizations' + paginate_by = settings.PAGE_LENGTH def get_context_data(self, **kwargs): ctx = super(HomepageView, self).get_context_data(**kwargs) - ctx['visualizations'] = Visualization.all_visualizations() ctx['warehouses'] = sorted((Engine(w) for w in get_warehouses()), key=lambda w: w.label) + ctx['request'] = self.request return ctx + def get_queryset(self): + return self.model.all_visualizations() + def get(self, request, *args, **kwargs): - ctx = self.get_context_data() - if not len(ctx['visualizations']) and len(ctx['warehouses']) == 1: - return HttpResponseRedirect(reverse('warehouse', kwargs={'warehouse': ctx['warehouses'][0].name}), + warehouses = get_warehouses() + if not len(self.get_queryset()) and len(warehouses) == 1: + engine = Engine(warehouses[0]) + return HttpResponseRedirect(reverse('warehouse', kwargs={'warehouse': engine.name}), status=307) return super(HomepageView, self).get(request, *args, **kwargs) diff --git a/bijoe/visualization/views.py b/bijoe/visualization/views.py index fc02ad9..ede388f 100644 --- a/bijoe/visualization/views.py +++ b/bijoe/visualization/views.py @@ -186,10 +186,16 @@ class VisualizationsView(views.AuthorizationMixin, ListView): template_name = 'bijoe/visualizations.html' model = models.Visualization context_object_name = 'visualizations' + paginate_by = settings.PAGE_LENGTH def get_queryset(self): return self.model.all_visualizations() + def get_context_data(self, **kwargs): + ctx = super(VisualizationView, self).get_context_data(**kwargs) + ctx['request'] = self.request + return ctx + class RenameVisualization(views.AuthorizationMixin, UpdateView): model = models.Visualization diff --git a/tests/settings.py b/tests/settings.py index 5e7ac02..777a2a4 100644 --- a/tests/settings.py +++ b/tests/settings.py @@ -1 +1,2 @@ BIJOE_CACHE = False +PAGE_LENGTH = 0 -- 2.20.1