Пример #1
0
def get_direct_url_node_children(node):
    from megacms.basewidgets.widgetmodels import URLNode
    assert isinstance(node, URLNode)
    ret = (
        URLNode.all()
        .filter('url_parent =', node.key())
        .order('url_order')
        .fetch(limit=None))
    return ret
Пример #2
0
def get_match_by_path(path):
    from megacms.basewidgets.widgetmodels import URLNode
    matches = (URLNode.all()
               .filter('denormalized_url = ', path)
               .fetch(None))
    if len(matches) > 1:
        raise Exception(
            'Found %s matches, expected only one for path '
            '"%s"' % (len(matches), path))
    return matches[0] if len(matches) == 1 else None
Пример #3
0
def page_url(context, url_fragment):
    from megacms.basewidgets.widgetmodels import URLNode
    context_key = '_linked_url_nodes'
    if not context_key in context:
        context[context_key] = dict()

    cached_nodes = context[context_key]
    if url_fragment in cached_nodes:
        url_node = cached_nodes[url_fragment]
    else:
        url_nodes = (URLNode.all()
                     .filter('url_fragment =', unicode(url_fragment))
                     .fetch(None))

        count = len(url_nodes)
        if not count == 1:
            raise InvalidURLNodeReference(
                'Expected one match for URLNode "%s". '
                'Found %s.' % (url_fragment, count,)
            )
        else:
            url_node = url_nodes[0]
            cached_nodes[url_fragment] = url_node
    return url_node.denormalized_url