X-Git-Url: http://git.ithinksw.org/philo.git/blobdiff_plain/abb8f8d1494156a87dff52f21253b160a9dcac72..852c72e59cb8720973a95ae9a6ac21c6db20ae5e:/utils.py diff --git a/utils.py b/utils.py index 11f9848..57f949e 100644 --- a/utils.py +++ b/utils.py @@ -1,6 +1,8 @@ from django.db import models from django.contrib.contenttypes.models import ContentType from django.core.paginator import Paginator, EmptyPage +from django.template import Context +from django.template.loader_tags import ExtendsNode, ConstantIncludeNode class ContentTypeLimiter(object): @@ -74,15 +76,15 @@ def paginate(objects, per_page=None, page_number=1): except (TypeError, ValueError): # Then either it wasn't set or it was set to an invalid value paginator = page = None - - # There also shouldn't be pagination if the list is too short. Try count() - # first - good chance it's a queryset, where count is more efficient. - try: - if objects.count() <= per_page: - paginator = page = None - except AttributeError: - if len(objects) <= per_page: - paginator = page = None + else: + # There also shouldn't be pagination if the list is too short. Try count() + # first - good chance it's a queryset, where count is more efficient. + try: + if objects.count() <= per_page: + paginator = page = None + except AttributeError: + if len(objects) <= per_page: + paginator = page = None try: return paginator, page, objects @@ -99,5 +101,24 @@ def paginate(objects, per_page=None, page_number=1): page = paginator.page(page_number) except EmptyPage: page = None + else: + objects = page.object_list return paginator, page, objects + + +LOADED_TEMPLATE_ATTR = '_philo_loaded_template' +BLANK_CONTEXT = Context() + + +def get_extended(self): + return self.get_parent(BLANK_CONTEXT) + + +def get_included(self): + return self.template + + +# We ignore the IncludeNode because it will never work in a blank context. +setattr(ExtendsNode, LOADED_TEMPLATE_ATTR, property(get_extended)) +setattr(ConstantIncludeNode, LOADED_TEMPLATE_ATTR, property(get_included)) \ No newline at end of file