summaryrefslogtreecommitdiff
path: root/showcase/models.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne@peacefrogs.net>2019-08-22 17:26:16 +0200
committerÉtienne Loks <etienne@peacefrogs.net>2019-08-22 17:26:16 +0200
commita1a02ac4a48bbc0614cc7b588afe1d0932b8e3a1 (patch)
treef996801e9b99a4cd9de424259e2cda231739a166 /showcase/models.py
parentc989b2480b48700d709ea6ea6dcb128b06ddf797 (diff)
downloadishtar-pergamon-a1a02ac4a48bbc0614cc7b588afe1d0932b8e3a1.tar.bz2
ishtar-pergamon-a1a02ac4a48bbc0614cc7b588afe1d0932b8e3a1.zip
Manage pagination
Diffstat (limited to 'showcase/models.py')
-rw-r--r--showcase/models.py19
1 files changed, 18 insertions, 1 deletions
diff --git a/showcase/models.py b/showcase/models.py
index 1510562..2623c6a 100644
--- a/showcase/models.py
+++ b/showcase/models.py
@@ -3,6 +3,7 @@ import requests
from django.conf import settings
from django.core.cache import cache
+from django.core.paginator import EmptyPage, PageNotAnInteger, Paginator
from django.db import models
from django.utils.translation import ugettext_lazy as _
@@ -81,7 +82,6 @@ class ExternalSource(models.Model):
@property
def data(self):
- # TODO: cache
return self.get_data()
def get_item(self, item_number):
@@ -105,3 +105,20 @@ class ShowCase(BasePage):
def data(self):
return self.external_source.get_data()
+ def get_context(self, request):
+ context = super(ShowCase, self).get_context(request)
+ page = request.GET.get('page', 1)
+
+ paginator = Paginator(self.data, 10)
+ try:
+ paginated_data = paginator.page(page)
+ except PageNotAnInteger:
+ paginated_data = paginator.page(1)
+ except EmptyPage:
+ paginated_data = paginator.page(paginator.num_pages)
+
+ context['paginated_data'] = paginated_data
+ if paginator.num_pages > 1:
+ context['paginator'] = paginator
+ return context
+