Ejemplo n.º 1
0
def page_detail(request, path=None):
    page = get_object_or_404(
        Page.objects.active(),
        path=f"/{path}/" if path else '/',
    )

    if page.redirect_to_url or page.redirect_to_page:
        return redirect(page.redirect_to_url or page.redirect_to_page)

    edit = request.user.is_authenticated and request.user.is_staff

    page.activate_language(request)
    ancestors = list(page.ancestors().reverse())
    return render(
        request,
        page.template.template_name,
        {
            "page":
            page,
            "edit":
            edit,
            "header_image":
            page.image,
            "meta_tags":
            meta_tags([page] + ancestors, request=request),
            "regions":
            Regions.from_item(
                page, renderer=renderer, timeout=60, inherit_from=ancestors),
        },
    )
Ejemplo n.º 2
0
def event_list(request):
    page = page_for_app_request(request)
    page.activate_language(request)

    ancestors = list(page.ancestors().reverse())

    event_list = event_list_for_page(page)

    if "section" in request.GET:
        event_list = event_list.filter(section__slug=request.GET["section"])

    return render_list(
        request,
        event_list,
        {
            "location_list":
            Location.objects.filter(event__in=event_list, ).distinct(),
            "page":
            page,
            "header_image":
            page.get_header_image(),
            "vapid_public_key":
            settings.VAPID_PUBLIC_KEY,
            "meta_tags":
            meta_tags([page] + ancestors, request=request),
            "regions":
            Regions.from_item(
                page,
                renderer=pages.renderer.renderer,
                timeout=60,
                inherit_from=ancestors,
            ),
        },
        paginate_by=12,
    )
Ejemplo n.º 3
0
def article_detail(request, slug):
    page = page_for_app_request(request)
    page.activate_language(request)

    article = get_object_or_404(articles_for_page(page, allow_future=True), slug=slug)

    ancestors = list(page.ancestors().reverse())
    edit = (
        request.user.is_authenticated
        and request.user.section_set.filter(pk=article.section.pk).exists()
    )

    return render(
        request,
        article.template.template_name,
        {
            "page": page,
            "article": article,
            "obj": article,
            "edit": edit,
            "header_image": article.get_header_image() or page.get_header_image(),
            "title": article.title,
            "meta_tags": meta_tags([article, page] + ancestors, request=request),
            "regions": Regions.from_item(article, renderer=renderer, timeout=60,),
            "page_regions": Regions.from_item(
                page,
                renderer=pages.renderer.renderer,
                timeout=60,
                inherit_from=ancestors,
            ),
        },
    )
Ejemplo n.º 4
0
def teams_for_section(request):
    page = page_for_app_request(request)
    page.activate_language(request)

    section = page.site.section
    ancestors = list(page.ancestors().reverse())

    return render_list(
        request,
        Team.objects.filter(
            section=section,
            language_code=page.language_code,
        ),
        {
            "page":
            page,
            "meta_tags":
            meta_tags([page] + ancestors, request=request),
            "regions":
            Regions.from_item(
                page,
                renderer=pages.renderer.renderer,
                timeout=60,
                inherit_from=ancestors,
            ),
        },
        paginate_by=10,
    )
Ejemplo n.º 5
0
def team_detail(request, pk):
    page = page_for_app_request(request)
    page.activate_language(request)

    team = get_object_or_404(Team, pk=pk)

    ancestors = list(page.ancestors().reverse())

    return render(
        request,
        "people/team_detail.html",
        {
            "page":
            page,
            "team":
            team,
            "meta_tags":
            meta_tags([page] + ancestors, request=request),
            "regions":
            Regions.from_item(
                page,
                renderer=pages.renderer.renderer,
                timeout=60,
                inherit_from=ancestors,
            ),
        },
    )
Ejemplo n.º 6
0
def article_detail(request, slug):
    page = page_for_app_request(request)
    page.activate_language(request)
    ancestors = list(page.ancestors().reverse())

    article = get_object_or_404(Article,
                                slug=slug,
                                namespace=page.namespace,
                                language_code=page.language_code)
    return render(
        request, 'blog/article_detail.html', {
            'page':
            page,
            'title':
            article.title,
            'article':
            article,
            "meta_tags":
            meta_tags([article, page] + ancestors, request=request),
            "blog_regions":
            Regions.from_item(article, renderer=renderer, timeout=60),
            "regions":
            Regions.from_item(page,
                              renderer=cms_renderer,
                              timeout=60,
                              inherit_from=ancestors),
        })
Ejemplo n.º 7
0
def event_list_for_section(request, pk):
    page = page_for_app_request(request)
    page.activate_language(request)

    section = get_object_or_404(Section, pk)

    event_list = event_list_for_page(page)

    event_list = event_list.filter(section=section)

    ancestors = list(page.ancestors().reverse())

    return render_list(
        request,
        event_list_for_page(page),
        {
            "page":
            page,
            "header_image":
            page.get_header_image(),
            "meta_tags":
            meta_tags([page] + ancestors, request=request),
            "regions":
            Regions.from_item(
                page,
                renderer=pages.renderer.renderer,
                timeout=60,
                inherit_from=ancestors,
            ),
            "section":
            section,
        },
        paginate_by=20,
    )
Ejemplo n.º 8
0
    def test_unknown_attribute_not_rendered(self):
        request = test.RequestFactory().get("/")
        self.assertEqual(
            str(meta_tags([], request=request, unknown="Stuff")),
            """\
<meta property="og:type" content="website">
  <meta property="og:url" content="http://testserver/">""",
        )
Ejemplo n.º 9
0
def article_list(request):
    page = page_for_app_request(request)
    page.activate_language(request)

    article_list = articles_for_page(page)
    category_list = Category.objects.filter(article__in=article_list).distinct()

    if request.GET.get("category", None):
        article_list = article_list.filter(
            category__slug__in=request.GET.getlist("category")
        )

    q = ""

    if request.GET.get("search", ""):
        vector = (
            SearchVector("title", weight="A")
            + SearchVector("category__name", weight="A")
            + SearchVector("blog_richtext_set__text", weight="A")
            + SearchVector("blog_glossaryrichtext_set__text", weight="A")
            + SearchVector("author__first_name", weight="B")
            + SearchVector("author__last_name", weight="B")
        )
        query = consume(request.GET["search"])
        q = request.GET["search"]
        article_list = (
            article_list.annotate(
                rank=SearchRank(vector, query, cover_density=True),
                headline=SearchHeadline(
                    'blog_richtext_set__text',
                    query,
                    max_words=25,
                    min_words=20,
                    max_fragments=2,
                )
            )
            .filter(rank__gt=0)
            .order_by("-rank")
            .distinct()
        )

    ancestors = list(page.ancestors().reverse())
    return render_list(
        request,
        article_list,
        {
            "page": page,
            "q": q,
            "header_image": page.get_header_image(),
            "vapid_public_key": settings.VAPID_PUBLIC_KEY,
            "category_list": category_list,
            "meta_tags": meta_tags([page] + ancestors, request=request),
            "regions": Regions.from_item(
                page, renderer=pages.renderer.renderer, timeout=60,
            ),
        },
        paginate_by=12,
    )
Ejemplo n.º 10
0
    def test_model(self):
        m = Model()
        request = test.RequestFactory().get("/stuff/")
        self.assertEqual(
            str(meta_tags([m], request=request)),
            """\
<meta property="og:type" content="website">
  <meta property="og:url" content="http://testserver/stuff/">""",
        )

        m.meta_canonical = "/bla/"
        self.assertEqual(
            str(meta_tags([m], request=request)),
            """\
<meta property="og:type" content="website">
  <meta property="og:url" content="http://testserver/bla/">
  <link rel="canonical" href="http://testserver/bla/">""",
        )

        # meta_title not set, falling back to title
        m.title = "test"
        self.assertEqual(
            str(meta_tags([m], request=request)),
            """\
<meta property="og:title" content="test">
  <meta property="og:type" content="website">
  <meta property="og:url" content="http://testserver/bla/">
  <link rel="canonical" href="http://testserver/bla/">""",
        )

        m = Model()
        m.meta_title = "title-test"
        # Generate both name="description" and property="og:description"
        m.meta_description = "description-test"
        self.assertEqual(
            str(meta_tags([m], request=request)),
            """\
<meta property="og:description" content="description-test">
  <meta property="og:title" content="title-test">
  <meta property="og:type" content="website">
  <meta property="og:url" content="http://testserver/stuff/">
  <meta name="description" content="description-test">""",
        )
Ejemplo n.º 11
0
def collection_view(request):
    page = page_for_app_request(request)
    collection = page.collection

    ancestors = list(page.ancestors().reverse())

    return render(
        request, 'link_collections/collection.html', {
            'meta_tags': meta_tags([page] + ancestors, request=request),
            'page': page,
            'collection': collection,
        })
Ejemplo n.º 12
0
    def test_basic_meta_tags(self):
        request = test.RequestFactory().get("/")
        self.assertEqual(
            str(meta_tags(request=request)),
            """\
<meta property="og:type" content="website">
  <meta property="og:url" content="http://testserver/">""",
        )

        lazy_url = lazy(lambda: "/lazy/", str)()
        self.assertEqual(
            str(meta_tags(url=lazy_url, request=request)),
            """\
<meta property="og:type" content="website">
  <meta property="og:url" content="http://testserver/lazy/">""",
        )

        self.assertEqual(
            str(meta_tags(request=request, defaults={"title": "stuff"}, title=None)),
            """\
<meta property="og:type" content="website">
  <meta property="og:url" content="http://testserver/">""",
        )
Ejemplo n.º 13
0
    def test_setting(self):
        request = test.RequestFactory().get("/")
        self.assertEqual(
            str(meta_tags([], request=request, unknown="Stuff")),
            """\
<meta property="og:description" content="desc">
  <meta property="og:image" content="http://testserver/logo.png">
  <meta property="og:site_name" content="site">
  <meta property="og:title" content="t">
  <meta property="og:type" content="website">
  <meta property="og:url" content="http://testserver/">
  <meta name="description" content="desc">
  <meta name="robots" content="noindex">""",
        )
Ejemplo n.º 14
0
def event_detail(request, year, month, day, slug):
    page = page_for_app_request(request)
    page.activate_language(request)

    event = get_object_or_404(
        event_list_for_page(page, past_events=True),
        slug=slug,
        section=page.site.section,
        start_date__year=year,
        start_date__month=month,
        start_date__day=day,
    )

    ancestors = list(page.ancestors().reverse())

    return render(
        request,
        event.template.template_name,
        {
            "page":
            page,
            "event":
            event,
            "obj":
            event,
            "header_image":
            event.get_header_image() or page.get_header_image(),
            "title":
            event.title,
            "meta_tags":
            meta_tags(
                [event, page] + ancestors,
                request=request,
            ),
            "regions":
            Regions.from_item(
                event,
                renderer=renderer,
                timeout=60,
            ),
            "page_regions":
            Regions.from_item(
                page,
                renderer=pages.renderer.renderer,
                timeout=60,
                inherit_from=ancestors,
            ),
        },
    )
Ejemplo n.º 15
0
def collection_view(request):
    page = page_for_app_request(request)
    collection = page.collection

    ancestors = list(page.ancestors().reverse())

    return render(
        request,
        "link_collections/collection.html",
        {
            "meta_tags": meta_tags([page] + ancestors, request=request),
            "page": page,
            "collection": collection,
        },
    )
Ejemplo n.º 16
0
def page_detail(request, path=None):
    page = Page.objects.active().filter(path=f"/{path}/" if path else "/")

    if path is None and not bool(page):
        return redirect(get_landing_page(request).path)

    if not bool(page):
        page = Page.objects.active().filter(
            path=f"/{request.LANGUAGE_CODE}/{path}/")
        if bool(page):
            return redirect(page[0].path)

        for language_code, _ in settings.LANGUAGES:
            page = Page.objects.active().filter(
                path=f"/{language_code}/{path}/")

            if bool(page):
                return redirect(page[0].path)
        raise Http404()

    page = page[0]

    if page.redirect_to_url or page.redirect_to_page:
        return redirect(page.redirect_to_url or page.redirect_to_page)

    edit = (request.user.is_authenticated and
            request.user.section_set.filter(pk=page.site.section.pk).exists())

    page.activate_language(request)
    ancestors = list(page.ancestors().reverse())
    return render(
        request,
        page.template.template_name,
        {
            "page": page,
            "edit": edit,
            "header_image": page.get_header_image(),
            "meta_tags": meta_tags([page] + ancestors, request=request),
            "regions": Regions.from_item(
                page,
                renderer=renderer,
                timeout=60,
            ),
        },
    )
Ejemplo n.º 17
0
def person_detail(request, pk):
    page = page_for_app_request(request)
    page.activate_language(request)

    person = get_object_or_404(Person, pk=pk)

    articles = Article.objects.filter(author=person)

    memberships = person.membership_set.filter(
        team__language_code=page.language_code)

    ancestors = list(page.ancestors().reverse())

    return render(
        request,
        "people/person_detail.html",
        {
            "page":
            page,
            "person":
            person,
            "memberships":
            memberships,
            "articles":
            articles,
            "header_image":
            page.get_header_image(),
            "title":
            person.get_full_name(),
            "meta_tags":
            meta_tags(
                [page] + ancestors,
                request=request,
                title=person.get_full_name(),
                description=person.description(),
            ),
            "regions":
            Regions.from_item(
                page,
                renderer=pages.renderer.renderer,
                timeout=60,
                inherit_from=ancestors,
            ),
        },
    )
Ejemplo n.º 18
0
def location_detail(request, slug):
    page = page_for_app_request(request)
    page.activate_language(request)

    location = get_object_or_404(Location.objects.all(), slug=slug)
    ancestors = list(page.ancestors().reverse())

    return render(
        request,
        "events/location_detail.html",
        {
            "page":
            page,
            "location":
            location,
            "obj":
            location,
            "title":
            location.name,
            "header_image":
            location.header_image or page.get_header_image(),
            "event_list":
            location.event_set.filter(end_date__gte=timezone.now(), ),
            "meta_tags":
            meta_tags([location, page] + ancestors, request=request),
            "regions":
            Regions.from_item(
                location,
                renderer=location_renderer,
                timeout=60,
            ),
            "page_regions":
            Regions.from_item(
                page,
                renderer=pages.renderer.renderer,
                timeout=60,
                inherit_from=ancestors,
            ),
        },
    )
Ejemplo n.º 19
0
def glossary(request):
    page = page_for_app_request(request)
    page.activate_language(request)

    ancestors = list(page.ancestors().reverse())

    entries = Entry.objects.filter(language_code=page.language_code)
    q = ""

    if "search" in request.GET and request.GET["search"]:
        vector = SearchVector("name", weight="A") + SearchVector("content", weight="B")
        query = consume(request.GET["search"])
        print(query)
        q = request.GET["search"]
        print(q)

        entries = (
            entries.annotate(rank=SearchRank(vector, query))
            .filter(rank__gte=0.1)
            .order_by("-rank")
        )

    return render_list(
        request,
        entries,
        {
            "page": page,
            "meta_tags": meta_tags([page] + ancestors, request=request),
            "header_image": page.get_header_image(),
            "regions": Regions.from_item(
                page,
                renderer=pages.renderer.renderer,
                timeout=60,
                inherit_from=ancestors,
            ),
            "search": q,
        },
        paginate_by=50,
    )
Ejemplo n.º 20
0
def article_list(request):
    page = page_for_app_request(request)

    page.activate_language(request)
    ancestors = list(page.ancestors().reverse())

    article_list = Article.objects.filter(namespace=page.namespace,
                                          publication_date__lte=timezone.now())

    return render_list(
        request, article_list, {
            'page':
            page,
            'article_list':
            article_list,
            "meta_tags":
            meta_tags([page] + ancestors, request=request),
            "regions":
            Regions.from_item(page,
                              renderer=cms_renderer,
                              timeout=60,
                              inherit_from=ancestors),
        })
Ejemplo n.º 21
0
def index(request):
    page = page_for_app_request(request)
    page.activate_language(request)

    campaign = page.campaign
    testimonials = campaign.testimonial_set.filter(public=True, validated=True)

    create_url = reverse_app(f"testimonials-{campaign.pk}", "create")

    paginator = Paginator(testimonials, 27)
    page_number = request.GET.get("page", 1)
    page_obj = paginator.get_page(page_number)

    ancestors = list(page.ancestors().reverse())
    return render(
        request,
        page.template_key,
        {
            "campaign":
            campaign,
            "page_obj":
            page_obj,
            "page":
            page,
            "meta_tags":
            meta_tags([page] + ancestors, request=request),
            "create_url":
            create_url,
            "regions":
            Regions.from_item(
                page,
                renderer=renderer,
                timeout=60,
                inherit_from=page.ancestors().reverse(),
            ),
        },
    )
Ejemplo n.º 22
0
def category_list(request, slug):
    page = page_for_app_request(request)
    page.activate_language(request)

    articles = articles_for_page(page).filter(category__slug=slug)

    ancestors = list(page.ancestors().reverse())

    return render_list(
        request,
        articles,
        {
            "page": page,
            "header_image": page.get_header_image(),
            "meta_tags": meta_tags([page] + ancestors, request=request),
            "regions": Regions.from_item(
                page,
                renderer=pages.renderer.renderer,
                timeout=60,
                inherit_from=ancestors,
            ),
        },
        paginate_by=10,
    )