Projet

Général

Profil

0001-views-add-pagination-to-visualizations-list-27410.patch

Valentin Deniaud, 11 décembre 2019 11:08

Télécharger (4,14 ko)

Voir les différences:

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(-)
bijoe/settings.py
172 172

  
173 173
BIJOE_CACHE = True
174 174

  
175
PAGE_LENGTH = 20
176

  
175 177
if 'BIJOE_SETTINGS_FILE' in os.environ:
176 178
    execfile(os.environ['BIJOE_SETTINGS_FILE'])
bijoe/templates/bijoe/visualizations_list.html
9 9
    </li>
10 10
  {% endfor %}
11 11
</ul>
12
{% include "gadjo/pagination.html" %}
bijoe/views.py
17 17
import json
18 18
import urllib
19 19

  
20
from django.conf import settings
20 21
from django.shortcuts import resolve_url
21 22
from django.core.urlresolvers import reverse
22
from django.views.generic import TemplateView, View
23
from django.views.generic import ListView, View
23 24
from django.http import HttpResponse, HttpResponseRedirect
24 25
from django.utils.translation import ugettext as _
25 26
from django.contrib.auth import logout as auth_logout
......
54 55
            return redirect_to_login(request.build_absolute_uri())
55 56

  
56 57

  
57
class HomepageView(AuthorizationMixin, TemplateView):
58
class HomepageView(AuthorizationMixin, ListView):
58 59
    template_name = 'bijoe/homepage.html'
60
    model = Visualization
61
    context_object_name = 'visualizations'
62
    paginate_by = settings.PAGE_LENGTH
59 63

  
60 64
    def get_context_data(self, **kwargs):
61 65
        ctx = super(HomepageView, self).get_context_data(**kwargs)
62
        ctx['visualizations'] = Visualization.all_visualizations()
63 66
        ctx['warehouses'] = sorted((Engine(w) for w in get_warehouses()),
64 67
                                   key=lambda w: w.label)
68
        ctx['request'] = self.request
65 69
        return ctx
66 70

  
71
    def get_queryset(self):
72
        return self.model.all_visualizations()
73

  
67 74
    def get(self, request, *args, **kwargs):
68
        ctx = self.get_context_data()
69
        if not len(ctx['visualizations']) and len(ctx['warehouses']) == 1:
70
            return HttpResponseRedirect(reverse('warehouse', kwargs={'warehouse': ctx['warehouses'][0].name}),
75
        warehouses = get_warehouses()
76
        if not len(self.get_queryset()) and len(warehouses) == 1:
77
            engine = Engine(warehouses[0])
78
            return HttpResponseRedirect(reverse('warehouse', kwargs={'warehouse': engine.name}),
71 79
                                        status=307)
72 80
        return super(HomepageView, self).get(request, *args, **kwargs)
73 81

  
bijoe/visualization/views.py
186 186
    template_name = 'bijoe/visualizations.html'
187 187
    model = models.Visualization
188 188
    context_object_name = 'visualizations'
189
    paginate_by = settings.PAGE_LENGTH
189 190

  
190 191
    def get_queryset(self):
191 192
        return self.model.all_visualizations()
192 193

  
194
    def get_context_data(self, **kwargs):
195
        ctx = super(VisualizationsView, self).get_context_data(**kwargs)
196
        ctx['request'] = self.request
197
        return ctx
198

  
193 199

  
194 200
class RenameVisualization(views.AuthorizationMixin, UpdateView):
195 201
    model = models.Visualization
tests/settings.py
1 1
BIJOE_CACHE = False
2
PAGE_LENGTH = 0
2
-