Exemplo n.º 1
0
def get_footnotes_for_page(request, page):
    '''
    Gets the Footnote instances for `page`, with the correct order.
    '''
    plugins = get_cmsplugin_queryset(request)
    cache_key = get_cache_key(page, plugins)
    footnote_ids = cache.get(cache_key)
    if footnote_ids is None:
        root_footnote_and_text_plugins = plugins.filter(
                placeholder__page=page,
                plugin_type__in=('FootnotePlugin', 'TextPlugin'),
                parent=None
            ).order_by('position')
        footnote_plugins = []
        footnote_plugins__append = footnote_plugins.append
        for p in root_footnote_and_text_plugins:
            if plugin_is_footnote(p):
                footnote_plugins__append(p)
            else:
                try:
                    text = downcast_plugins((p,))[0]
                except IndexError:
                    continue
                plugin_iterator = plugin_iterator_from_text_plugin(text)
                for plugin in plugin_iterator:
                    if plugin_is_footnote(plugin):
                        footnote_plugins__append(plugin)
        footnote_ids = tuple(f.pk for f in downcast_plugins(footnote_plugins))
        cache.set(cache_key, footnote_ids   )
    return Footnote.objects.filter(pk__in=footnote_ids)
    def get_inherited_snippets(self, placeholder):
        if not placeholder or not placeholder.page:
            return []

        def can_be_overwritten(plg):
            return (
                plg.__class__ is SmartSnippetPointer and
                plg.variables.exists()
            )

        page = placeholder.page
        slot = placeholder.slot
        pages = chain([page], page.get_cached_ancestors(ascending=True))
        for ancestor in pages:
            placeholder = ancestor.placeholders.filter(slot=slot)[:1]
            if not placeholder:
                continue
            placeholder = placeholder[0]
            plugins = downcast_plugins(placeholder.get_plugins())
            if not plugins:
                continue
            return sorted(
                filter(can_be_overwritten, plugins),
                key=lambda plg: plg.position,
            )
        return []
    def get_inherited_snippets(self, placeholder):
        if not placeholder or not placeholder.page:
            return []

        def can_be_overwritten(plg):
            return (plg.__class__ is SmartSnippetPointer
                    and plg.variables.exists())

        page = placeholder.page
        slot = placeholder.slot
        pages = chain([page], page.get_cached_ancestors(ascending=True))
        for ancestor in pages:
            placeholder = ancestor.placeholders.filter(slot=slot)[:1]
            if not placeholder:
                continue
            placeholder = placeholder[0]
            plugins = downcast_plugins(placeholder.get_plugins())
            if not plugins:
                continue
            return sorted(
                filter(can_be_overwritten, plugins),
                key=lambda plg: plg.position,
            )
        return []
Exemplo n.º 4
0
def _plugin_dict(text, regex=OBJ_ADMIN_RE):
    plugin_ids = plugin_tags_to_id_list(text, regex)
    plugin_list = downcast_plugins(CMSPlugin.objects.filter(pk__in=plugin_ids), select_placeholder=True)
    return dict((plugin.pk, plugin) for plugin in plugin_list)
Exemplo n.º 5
0
def _plugin_dict(text, regex=OBJ_ADMIN_RE):
    plugin_ids = plugin_tags_to_id_list(text, regex)
    plugin_list = downcast_plugins(CMSPlugin.objects.filter(pk__in=plugin_ids), select_placeholder=True)
    return dict((plugin.pk, plugin) for plugin in plugin_list)