Beispiel #1
0
    def setUp(self):
        root = Page.objects.get(pk=1)
        root_a = Page(
            title='Home A', slug='home-a')
        root.add_child(instance=root_a)

        root_b = Page(
            title='Home B', slug='home-b')
        root.add_child(instance=root_b)

        self.index_a = NewsIndex(title='News A', slug='news-a')
        root_a.add_child(instance=self.index_a)

        self.index_b = NewsIndex(title='News B', slug='news-b')
        root_b.add_child(instance=self.index_b)

        self.site_a = Site.objects.create(
            hostname='site-a.com',
            root_page=root_a)

        self.site_b = Site.objects.create(
            hostname='site-b.org',
            root_page=root_b)

        self.item_a = NewsItem.objects.create(
            newsindex=self.index_a, title='Post A', date=dt(2015, 8, 1))
        self.item_b = NewsItem.objects.create(
            newsindex=self.index_b, title='Post B', date=dt(2015, 8, 2))
    def test_slug_scopes_to_site(self):
        home_page = Page.objects.get(slug="home")
        article_index_one = Page(title="First Index", slug="firstindex")
        article_index_two = Page(title="Second Index", slug="secondindex")
        home_page.add_child(instance=article_index_one)
        home_page.add_child(instance=article_index_two)

        article_one = Page(title="Article One", slug="articleone")
        article_two = Page(title="Article Two", slug="articletwo")

        article_index_one.add_child(instance=article_one)
        article_index_two.add_child(instance=article_two)

        result = slug_matches_one_page_exactly("/shows/articleone/", article_index_two)

        assert result is None
    def test_multiple_articles_with_same_slug_returns_none(self):
        home_page = Page.objects.get(slug="home")
        article_index_one = Page(title="First Index", slug="firstindex")
        article_index_two = Page(title="Second Index", slug="secondindex")
        home_page.add_child(instance=article_index_one)
        home_page.add_child(instance=article_index_two)

        article_one = Page(title="Workzone with Bridget Masinga", slug="workzonewithbridgetmasinga")
        article_two = Page(title="Workzone with Bridget Masinga", slug="workzonewithbridgetmasinga")

        article_index_one.add_child(instance=article_one)
        article_index_two.add_child(instance=article_two)

        result = slug_matches_one_page_exactly("/shows/workzonewithbridgetmasinga/", home_page)

        assert result is None
    def test_slug_scopes_to_site(self):
        home_page = Page.objects.get(slug='home')
        article_index_one = Page(title='First Index', slug='firstindex')
        article_index_two = Page(title='Second Index', slug='secondindex')
        home_page.add_child(instance=article_index_one)
        home_page.add_child(instance=article_index_two)

        article_one = Page(title='Article One', slug='articleone')
        article_two = Page(title='Article Two', slug='articletwo')

        article_index_one.add_child(instance=article_one)
        article_index_two.add_child(instance=article_two)

        result = slug_matches_one_page_exactly('/shows/articleone/',
                                               article_index_two)

        assert result is None
    def test_multiple_articles_with_same_slug_returns_none(self):
        home_page = Page.objects.get(slug='home')
        article_index_one = Page(title='First Index', slug='firstindex')
        article_index_two = Page(title='Second Index', slug='secondindex')
        home_page.add_child(instance=article_index_one)
        home_page.add_child(instance=article_index_two)

        article_one = Page(title='Workzone with Bridget Masinga',
                           slug='workzonewithbridgetmasinga')
        article_two = Page(title='Workzone with Bridget Masinga',
                           slug='workzonewithbridgetmasinga')

        article_index_one.add_child(instance=article_one)
        article_index_two.add_child(instance=article_two)

        result = slug_matches_one_page_exactly(
            '/shows/workzonewithbridgetmasinga/', home_page)

        assert result is None
Beispiel #6
0
def build_page_tree(
        # Would that mypy supported recursive types
        tree: Iterable[Tuple[Page, Iterable]],
        root: Page = None) -> List[Page]:
    """
    Construct a page tree in the database. Accepts a tree in the form:

        [
            (Page, [
                (Page, [...]),
                (Page, [...]),
                Page,
            ]),
        ]

    where ``[...]`` is a nested iterable of (Page, children) tuples or bare
    page instances.
    """

    created = []

    for node in tree:
        if isinstance(node, Page):
            # If `node` is a bare page, it has no children
            page = node
            children = []
        else:
            # Otherwise assume it is a (Page, children) tuple
            page, children = node

        if root:
            root.add_child(instance=page)
        else:
            type(page).add_root(instance=page)

        created += [page]
        created += build_page_tree(children, root=page)

    return created