def test_show_uncached_placeholder_tag_no_use_cache(self): """ Tests that {% show_uncached_placeholder %} does not populate cache. """ template = '{% load cms_tags %}<h1>{% show_uncached_placeholder "sub" test_page %}</h1>' cache_value_before = get_placeholder_page_cache(self.test_page, 'en', self.test_page.site_id, 'sub') output = self.render(template, self.test_page, {'test_page': self.test_page}) cache_value_after = get_placeholder_page_cache(self.test_page, 'en', self.test_page.site_id, 'sub') self.assertEqual(output, '<h1>%s</h1>' % self.test_data['text_sub']) self.assertEqual(cache_value_before, cache_value_after) self.assertIsNone(cache_value_after)
def test_show_uncached_placeholder_tag_no_use_cache(self): """ Tests that {% show_uncached_placeholder %} does not populate cache. """ template = '{% load cms_tags %}<h1>{% show_uncached_placeholder "sub" test_page %}</h1>' cache_value_before = get_placeholder_page_cache( self.test_page, 'en', self.test_page.site_id, 'sub') output = self.render(template, self.test_page, {'test_page': self.test_page}) cache_value_after = get_placeholder_page_cache(self.test_page, 'en', self.test_page.site_id, 'sub') self.assertEqual(output, '<h1>%s</h1>' % self.test_data['text_sub']) self.assertEqual(cache_value_before, cache_value_after) self.assertIsNone(cache_value_after)
def _show_placeholder_for_page(context, placeholder_name, page_lookup, lang=None, site=None, cache_result=True): """ Shows the content of a page with a placeholder name and given lookup arguments in the given language. This is useful if you want to have some more or less static content that is shared among many pages, such as a footer. See _get_page_by_untyped_arg() for detailed information on the allowed types and their interpretation for the page_lookup argument. """ validate_placeholder_name(placeholder_name) if DJANGO_1_7: request = context.get('request', False) else: request = context.request site_id = get_site_id(site) if not request: return {'content': ''} if lang is None: lang = get_language_from_request(request) if cache_result: cached_value = get_placeholder_page_cache(page_lookup, lang, site_id, placeholder_name) if cached_value: restore_sekizai_context(context, cached_value['sekizai']) return {'content': mark_safe(cached_value['content'])} page = _get_page_by_untyped_arg(page_lookup, request, site_id) if not page: return {'content': ''} try: placeholder = page.placeholders.get(slot=placeholder_name) except PlaceholderModel.DoesNotExist: if settings.DEBUG: raise return {'content': ''} watcher = Watcher(context) content = render_placeholder(placeholder, context, placeholder_name, use_cache=cache_result) changes = watcher.get_changes() if cache_result: set_placeholder_page_cache(page_lookup, lang, site_id, placeholder_name, {'content': content, 'sekizai': changes}) if content: return {'content': mark_safe(content)} return {'content': ''}
def _show_placeholder_for_page(context, placeholder_name, page_lookup, lang=None, site=None, cache_result=True): """ Shows the content of a page with a placeholder name and given lookup arguments in the given language. This is useful if you want to have some more or less static content that is shared among many pages, such as a footer. See _get_page_by_untyped_arg() for detailed information on the allowed types and their interpretation for the page_lookup argument. """ validate_placeholder_name(placeholder_name) request = context.get('request', False) site_id = get_site_id(site) if not request: return {'content': ''} if lang is None: lang = get_language_from_request(request) if cache_result: cached_value = get_placeholder_page_cache(page_lookup, lang, site_id, placeholder_name) if cached_value: restore_sekizai_context(context, cached_value['sekizai']) return {'content': mark_safe(cached_value['content'])} page = _get_page_by_untyped_arg(page_lookup, request, site_id) if not page: return {'content': ''} try: placeholder = page.placeholders.get(slot=placeholder_name) except PlaceholderModel.DoesNotExist: if settings.DEBUG: raise return {'content': ''} watcher = Watcher(context) content = render_placeholder(placeholder, context, placeholder_name, lang=lang, use_cache=cache_result) changes = watcher.get_changes() if cache_result: set_placeholder_page_cache(page_lookup, lang, site_id, placeholder_name, {'content': content, 'sekizai': changes}) if content: return {'content': mark_safe(content)} return {'content': ''}