diff options
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 |
commit | a1a02ac4a48bbc0614cc7b588afe1d0932b8e3a1 (patch) | |
tree | f996801e9b99a4cd9de424259e2cda231739a166 /showcase/models.py | |
parent | c989b2480b48700d709ea6ea6dcb128b06ddf797 (diff) | |
download | ishtar-pergamon-a1a02ac4a48bbc0614cc7b588afe1d0932b8e3a1.tar.bz2 ishtar-pergamon-a1a02ac4a48bbc0614cc7b588afe1d0932b8e3a1.zip |
Manage pagination
Diffstat (limited to 'showcase/models.py')
-rw-r--r-- | showcase/models.py | 19 |
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 + |