fix: dont use query for children total count
This commit is contained in:
@@ -1,20 +1,29 @@
|
||||
from lektor import datamodel
|
||||
from typing import TYPE_CHECKING, Any
|
||||
from typing import TYPE_CHECKING, Any, Dict
|
||||
if TYPE_CHECKING:
|
||||
from lektor.environment import Environment
|
||||
from lektor.pagination import Pagination
|
||||
from lektor.sourceobj import SourceObject
|
||||
|
||||
|
||||
class PaginationConfig(datamodel.PaginationConfig):
|
||||
# because original method does not work for virtual sources.
|
||||
def __init__(self, env: 'Environment', config: Dict[str, Any], total: int):
|
||||
super().__init__(env, **config)
|
||||
self._total_items_count = total
|
||||
|
||||
@staticmethod
|
||||
def get_record_for_page(source: 'SourceObject', page_num: int) -> Any:
|
||||
for_page = getattr(source, '__for_page__', None)
|
||||
def get_record_for_page(record: 'SourceObject', page_num: int) -> Any:
|
||||
for_page = getattr(record, '__for_page__', None)
|
||||
if callable(for_page):
|
||||
return for_page(page_num)
|
||||
return datamodel.PaginationConfig.get_record_for_page(source, page_num)
|
||||
return datamodel.PaginationConfig.get_record_for_page(record, page_num)
|
||||
|
||||
def count_total_items(self, record: 'SourceObject') -> int:
|
||||
''' Override super() to prevent a record.children query. '''
|
||||
return self._total_items_count
|
||||
|
||||
if TYPE_CHECKING:
|
||||
def get_pagination_controller(self, source: 'SourceObject') \
|
||||
def get_pagination_controller(self, record: 'SourceObject') \
|
||||
-> 'Pagination':
|
||||
...
|
||||
|
||||
Reference in New Issue
Block a user