def _get_placeholder(current_page, page, context, name): from cms.utils.plugins import get_placeholders placeholder_cache = getattr(current_page, '_tmp_placeholders_cache', {}) if page.pk in placeholder_cache: return placeholder_cache[page.pk].get(name, None) placeholder_cache[page.pk] = {} slots = get_placeholders(page.get_template()) placeholders = page.placeholders.filter(slot__in=slots) assign_plugins(context['request'], placeholders, get_language()) for placeholder in placeholders: placeholder_cache[page.pk][placeholder.slot] = placeholder placeholder.page = page current_page._tmp_placeholders_cache = placeholder_cache return placeholder_cache[page.pk].get(name, None)
def _get_placeholder(current_page, page, context, name): placeholder_cache = getattr(current_page, '_tmp_placeholders_cache', {}) if page.pk in placeholder_cache: placeholder = placeholder_cache[page.pk].get(name, None) if placeholder: return placeholder placeholder_cache[page.pk] = {} placeholders = page.rescan_placeholders().values() assign_plugins(context['request'], placeholders, get_language()) for placeholder in placeholders: placeholder_cache[page.pk][placeholder.slot] = placeholder placeholder.page = page current_page._tmp_placeholders_cache = placeholder_cache placeholder = placeholder_cache[page.pk].get(name, None) if page.application_urls and not placeholder: raise PlaceholderNotFound( '"%s" placeholder not found in an apphook application. Please use stacks instead.' % name) return placeholder