コード例 #1
0
    def test_url_scan_on_put(self):
        """Should scan for links and store referenced URLNode ids on save"""
        url_node_1 = URLNode(
            url_order=0,
            title='Test URLNode',
            url_fragment='test-url-node-1',
        )
        url_node_1.put()

        url_node_2 = URLNode(
            url_order=0,
            title='Test URLNode 2',
            url_fragment='test-url-node-2',
        )
        url_node_2.put()

        test_widget = DummyWidget(
            name='Dummy Widget',
            html_element='p',
            content=(
                'Content with multiple links: '
                '{% page_url "test-url-node-1" %} '
                '{% page_url "test-url-node-2" %} '
                '{% page_url "test-url-node-1" %} '
            )
        )
        test_widget.put()
        self.assertEqual(2, len(test_widget.linked_url_node_keys))
        expected = set([str(url_node_1.key()), str(url_node_2.key())])
        found = set(test_widget.linked_url_node_keys)
        self.assertEqual(expected, found)
コード例 #2
0
ファイル: testpageurl.py プロジェクト: binarytemple/megacms
 def test_tag(self):
     """Should return a URLNode's URL and collect the node in the context"""
     url_fragment = 'this-does-exist'
     node = URLNode(
         url_order=0,
         title='Title',
         url_fragment=url_fragment,
     )
     node.put()
     ctx = template.Context({})
     ret = page_url(ctx, 'this-does-exist')
     self.assertEqual(ret, node.denormalized_url)
     self.assertTrue('_linked_url_nodes' in ctx)
     self.assertEqual(
         ctx['_linked_url_nodes'][url_fragment].key(), node.key())
コード例 #3
0
ファイル: query.py プロジェクト: binarytemple/megacms
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
コード例 #4
0
ファイル: query.py プロジェクト: binarytemple/megacms
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
コード例 #5
0
ファイル: widgets.py プロジェクト: binarytemple/megacms
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