mirror of
https://github.com/getpelican/pelican.git
synced 2025-10-15 20:28:56 +02:00
Support last page pattern in PAGINATION_PATTERNS
This commit is contained in:
parent
659c4cbf0f
commit
89a31141ff
3 changed files with 38 additions and 2 deletions
|
|
@ -1067,6 +1067,11 @@ as follows::
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
If you want a pattern to apply to the last page in the list, use ``-1``
|
||||||
|
as the ``minimum_page`` value::
|
||||||
|
|
||||||
|
(-1, '{base_name}/last/', '{base_name}/last/index.html'),
|
||||||
|
|
||||||
Translations
|
Translations
|
||||||
============
|
============
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -118,8 +118,13 @@ class Page:
|
||||||
|
|
||||||
# find the last matching pagination rule
|
# find the last matching pagination rule
|
||||||
for p in self.settings['PAGINATION_PATTERNS']:
|
for p in self.settings['PAGINATION_PATTERNS']:
|
||||||
if p.min_page <= self.number:
|
if p.min_page == -1:
|
||||||
rule = p
|
if not self.has_next():
|
||||||
|
rule = p
|
||||||
|
break
|
||||||
|
else:
|
||||||
|
if p.min_page <= self.number:
|
||||||
|
rule = p
|
||||||
|
|
||||||
if not rule:
|
if not rule:
|
||||||
return ''
|
return ''
|
||||||
|
|
|
||||||
|
|
@ -76,3 +76,29 @@ class TestPage(unittest.TestCase):
|
||||||
page2 = paginator.page(2)
|
page2 = paginator.page(2)
|
||||||
self.assertEqual(page2.save_as, 'blog/2/index.html')
|
self.assertEqual(page2.save_as, 'blog/2/index.html')
|
||||||
self.assertEqual(page2.url, '//blog.my.site/2/')
|
self.assertEqual(page2.url, '//blog.my.site/2/')
|
||||||
|
|
||||||
|
def test_custom_pagination_pattern_last_page(self):
|
||||||
|
from pelican.paginator import PaginationRule
|
||||||
|
settings = get_settings()
|
||||||
|
settings['PAGINATION_PATTERNS'] = [PaginationRule(*r) for r in [
|
||||||
|
(1, '/{url}1/', '{base_name}/1/index.html'),
|
||||||
|
(2, '/{url}{number}/', '{base_name}/{number}/index.html'),
|
||||||
|
(-1, '/{url}', '{base_name}/index.html'),
|
||||||
|
]]
|
||||||
|
|
||||||
|
self.page_kwargs['metadata']['author'] = Author('Blogger', settings)
|
||||||
|
object_list = [Article(**self.page_kwargs),
|
||||||
|
Article(**self.page_kwargs),
|
||||||
|
Article(**self.page_kwargs)]
|
||||||
|
paginator = Paginator('blog/index.html', '//blog.my.site/',
|
||||||
|
object_list, settings, 1)
|
||||||
|
# The URL *has to* stay absolute (with // in the front), so verify that
|
||||||
|
page1 = paginator.page(1)
|
||||||
|
self.assertEqual(page1.save_as, 'blog/1/index.html')
|
||||||
|
self.assertEqual(page1.url, '//blog.my.site/1/')
|
||||||
|
page2 = paginator.page(2)
|
||||||
|
self.assertEqual(page2.save_as, 'blog/2/index.html')
|
||||||
|
self.assertEqual(page2.url, '//blog.my.site/2/')
|
||||||
|
page3 = paginator.page(3)
|
||||||
|
self.assertEqual(page3.save_as, 'blog/index.html')
|
||||||
|
self.assertEqual(page3.url, '//blog.my.site/')
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue