Ejemplo n.º 1
0
    def test_site_apps(self):
        """Test that apps are only available inside their sites"""

        page = Page.objects.create(
            title="blog",
            slug="blog",
            static_path=False,
            language_code="en",
            is_active=True,
            application="blog",
            site=Site.objects.create(host="testserver2"),
        )
        a = Article.objects.create(title="article", category="blog")

        # No urlconf.
        self.assertRaises(NoReverseMatch, a.get_absolute_url)

        # No apps on this site
        with set_current_site(self.test_site):
            self.assertEqual(apps_urlconf(), "testapp.urls")
        # Apps on this site
        with set_current_site(page.site):
            self.assertEqual(apps_urlconf(),
                             "urlconf_01c07a48384868b2300536767c9879e2")

        try:
            set_urlconf("urlconf_01c07a48384868b2300536767c9879e2")
            self.assertEqual(a.get_absolute_url(), "/blog/%s/" % a.pk)

        finally:
            set_urlconf(None)
Ejemplo n.º 2
0
 def _get_absolute_url():
     try:
         site = current_site()
         if site == self.section.site:
             return reverse_app(
                 (
                     f"{site.id}-blog-{self.namespace.name}-{self.category}",
                     f"{site.id}-blog-{self.namespace.name}",
                     f"{site.id}-blog-{self.category}",
                     f"{site.id}-blog",
                 ),
                 "article-detail",
                 kwargs={"slug": self.slug},
                 languages=[self.language_code],
             )
         with set_current_site(self.section.site):
             site = self.section.site
             return ("//" + self.section.site.host + reverse_app(
                 [
                     f'{site.id}-blog-{self.namespace.name}-{self.category or ""}',
                     f"{site.id}-blog-{self.namespace.name}",
                     f'{site.id}-blog-{self.category or ""}',
                     f"{site.id}-blog",
                 ],
                 "article-detail",
                 urlconf=apps_urlconf(),
                 kwargs={"slug": self.slug},
                 languages=[self.language_code],
             ))
     except NoReverseMatch:
         return "#"
Ejemplo n.º 3
0
 def get_absolute_url(self):
     site = current_site()
     if self.section.site == site:
         return reverse_app(
             (f"{self.section.site_id}-people", ),
             "team-detail",
             kwargs={"pk": self.pk},
         )
     with set_current_site(self.section.site):
         return ("//" + self.section.site.host + reverse_app(
             [f"{self.section.site.id}-people"],
             "team-detail",
             urlconf=apps_urlconf(),
             kwargs={"pk": self.pk},
         ))
Ejemplo n.º 4
0
 def ical_event(self):
     with set_current_site(self.section.site):
         start = self.start_date.strftime("%Y%m%dT%H%M00")
         end = self.end_date.strftime("%Y%m%dT%H%M00")
         timestamp = now().strftime("%Y%m%dT%H%M00")
         return (
             "BEGIN:VEVENT\r\n"
             f"UID:{self.uuid}\r\n"
             f"DTSTAMP:{timestamp}Z\r\n"
             f"SUMMARY:{self.title}\r\n"
             f"DTSTART:{start}Z\r\n"
             f"DTEND:{end}Z\r\n"
             f"DESCRIPTION:https://{self.section.site.host}{self.get_absolute_url()}\r\n"
             f"LOCATION:{self.get_address()}\r\n"
             "END:VEVENT\r\n")
Ejemplo n.º 5
0
 def get_absolute_url(self):
     try:
         site = current_site()
         if not self.section or site == self.section.site:
             return reverse_app([f"{site.pk}-events"],
                                "location-detail",
                                kwargs={"slug": self.slug})
         with set_current_site(self.section.site):
             return ("//" + self.section.site.host + reverse_app(
                 [f"{self.section.site.id}-events"],
                 "location-detail",
                 urlconf=apps_urlconf(),
                 kwargs={"slug": self.slug},
             ))
     except NoReverseMatch:
         return "#"
Ejemplo n.º 6
0
 def _get_absolute_url():
     try:
         site = current_site()
         if site == self.section.site:
             return reverse_app(
                 [
                     f"{site.id}-events-{self.category}",
                     f"{site.id}-events",
                 ],
                 "event-detail",
                 urlconf=apps_urlconf(),
                 kwargs={
                     "slug": self.slug,
                     "day": self.start_date.day,
                     "month": self.start_date.month,
                     "year": self.start_date.year,
                 },
                 languages=[self.language_code],
             )
         with set_current_site(self.section.site):
             return ("//" + self.section.site.host + reverse_app(
                 [
                     f"{self.section.site.id}-events-{self.category}",
                     f"{self.section.site.id}-events",
                 ],
                 "event-detail",
                 urlconf=apps_urlconf(),
                 kwargs={
                     "slug": self.slug,
                     "day": self.start_date.day,
                     "month": self.start_date.month,
                     "year": self.start_date.year,
                 },
                 languages=[self.language_code],
             ))
     except NoReverseMatch:
         return "#"
Ejemplo n.º 7
0
    def test_apps(self):
        """Article app test (two instance namespaces, two languages)"""

        home_de = Page.objects.create(
            title="home",
            slug="home",
            path="/de/",
            static_path=True,
            language_code="de",
            is_active=True,
            menu="main",
            site=self.test_site,
        )
        home_en = Page.objects.create(
            title="home",
            slug="home",
            path="/en/",
            static_path=True,
            language_code="en",
            is_active=True,
            menu="main",
            site=self.test_site,
        )

        for root in (home_de, home_en):
            for app in ("blog", "publications"):
                Page.objects.create(
                    title=app,
                    slug=app,
                    static_path=False,
                    language_code=root.language_code,
                    is_active=True,
                    application=app,
                    parent_id=root.pk,
                    site=self.test_site,
                )

        for i in range(7):
            for category in ("publications", "blog"):
                Article.objects.create(title="%s %s" % (category, i),
                                       category=category)

        self.assertContains(self.client.get("/de/blog/all/"),
                            'class="article"', 7)
        self.assertContains(self.client.get("/de/blog/?page=2"),
                            'class="article"', 2)
        self.assertContains(
            self.client.get("/de/blog/?page=42"),
            'class="article"',
            2,  # Last page with instances (2nd)
        )
        self.assertContains(
            self.client.get("/de/blog/?page=invalid"),
            'class="article"',
            5,  # First page
        )

        response = self.client.get("/de/blog/")
        self.assertContains(response, 'class="article"', 5)

        response = self.client.get("/en/publications/")
        self.assertContains(response, 'class="article"', 5)

        with set_current_site(self.test_site):
            set_urlconf(apps_urlconf())
            try:
                article = Article.objects.order_by("pk").first()
                with override("de"):
                    self.assertEqual(article.get_absolute_url(),
                                     "/de/publications/%s/" % article.pk)

                with override("en"):
                    self.assertEqual(article.get_absolute_url(),
                                     "/en/publications/%s/" % article.pk)
            finally:
                set_urlconf(None)

        response = self.client.get("/de/publications/%s/" % article.pk)
        self.assertContains(response, "<h1>publications 0</h1>", 1)

        # The exact value of course does not matter, just the fact that the
        # value does not change all the time.
        with set_current_site(self.test_site):
            self.assertEqual(apps_urlconf(),
                             "urlconf_fe9552a8363ece1f7fcf4970bf575a47")

        p = Page.objects.create(
            title="new",
            slug="new",
            path="/bla/",
            static_path=True,
            language_code="en",
            is_active=True,
            application="blog",
            site=Site.objects.create(host="testserver3"),
        )

        with set_current_site(self.test_site):
            self.assertEqual(apps_urlconf(),
                             "urlconf_fe9552a8363ece1f7fcf4970bf575a47")

        p.site = self.test_site
        p.save()

        with set_current_site(self.test_site):
            self.assertEqual(apps_urlconf(),
                             "urlconf_0ca4c18b8aca69acfe121a9cbbdbd00e")