aboutsummaryrefslogtreecommitdiffstats
path: root/pydis_site/apps
diff options
context:
space:
mode:
authorGravatar ks129 <[email protected]>2020-11-28 10:07:54 +0200
committerGravatar GitHub <[email protected]>2020-11-28 10:07:54 +0200
commitd1099b8401a900b2963f3b5fbdee9c8cbdf5a13d (patch)
treee609f34377af2f5aacf2585807bbd46f7538f6ac /pydis_site/apps
parentRemove old templates (diff)
parentMerge pull request #417 from ks129/events-app (diff)
Merge branch 'dewikification' into guides-app
Diffstat (limited to 'pydis_site/apps')
-rw-r--r--pydis_site/apps/events/__init__.py0
-rw-r--r--pydis_site/apps/events/apps.py7
-rw-r--r--pydis_site/apps/events/migrations/__init__.py0
-rw-r--r--pydis_site/apps/events/tests/__init__.py0
-rw-r--r--pydis_site/apps/events/tests/test_views.py42
-rw-r--r--pydis_site/apps/events/urls.py9
-rw-r--r--pydis_site/apps/events/views/__init__.py4
-rw-r--r--pydis_site/apps/events/views/index.py7
-rw-r--r--pydis_site/apps/events/views/page.py25
-rw-r--r--pydis_site/apps/home/urls.py1
10 files changed, 95 insertions, 0 deletions
diff --git a/pydis_site/apps/events/__init__.py b/pydis_site/apps/events/__init__.py
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/pydis_site/apps/events/__init__.py
diff --git a/pydis_site/apps/events/apps.py b/pydis_site/apps/events/apps.py
new file mode 100644
index 00000000..a1cf09ef
--- /dev/null
+++ b/pydis_site/apps/events/apps.py
@@ -0,0 +1,7 @@
+from django.apps import AppConfig
+
+
+class EventsConfig(AppConfig):
+ """Django AppConfig for events app."""
+
+ name = 'events'
diff --git a/pydis_site/apps/events/migrations/__init__.py b/pydis_site/apps/events/migrations/__init__.py
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/pydis_site/apps/events/migrations/__init__.py
diff --git a/pydis_site/apps/events/tests/__init__.py b/pydis_site/apps/events/tests/__init__.py
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/pydis_site/apps/events/tests/__init__.py
diff --git a/pydis_site/apps/events/tests/test_views.py b/pydis_site/apps/events/tests/test_views.py
new file mode 100644
index 00000000..0db0ef9a
--- /dev/null
+++ b/pydis_site/apps/events/tests/test_views.py
@@ -0,0 +1,42 @@
+from pathlib import Path
+
+from django.conf import settings
+from django.test import TestCase, override_settings
+from django_hosts.resolvers import reverse
+
+
+PAGES_PATH = Path(settings.BASE_DIR, "pydis_site", "templates", "events", "test-pages")
+
+
+class IndexTests(TestCase):
+ def test_events_index_response_200(self):
+ """Should return response code 200 when visiting index of events."""
+ url = reverse("events:index")
+ resp = self.client.get(url)
+ self.assertEqual(resp.status_code, 200)
+
+
+class PageTests(TestCase):
+ @override_settings(PAGES_PATH=PAGES_PATH)
+ def test_valid_event_page_reponse_200(self):
+ """Should return response code 200 when visiting valid event page."""
+ pages = (
+ reverse("events:page", ("my-event",)),
+ reverse("events:page", ("my-event/subpage",)),
+ )
+ for page in pages:
+ with self.subTest(page=page):
+ resp = self.client.get(page)
+ self.assertEqual(resp.status_code, 200)
+
+ @override_settings(PAGES_PATH=PAGES_PATH)
+ def test_invalid_event_page_404(self):
+ """Should return response code 404 when visiting invalid event page."""
+ pages = (
+ reverse("events:page", ("invalid",)),
+ reverse("events:page", ("invalid/invalid",))
+ )
+ for page in pages:
+ with self.subTest(page=page):
+ resp = self.client.get(page)
+ self.assertEqual(resp.status_code, 404)
diff --git a/pydis_site/apps/events/urls.py b/pydis_site/apps/events/urls.py
new file mode 100644
index 00000000..9a65cf1f
--- /dev/null
+++ b/pydis_site/apps/events/urls.py
@@ -0,0 +1,9 @@
+from django.urls import path
+
+from pydis_site.apps.events.views import IndexView, PageView
+
+app_name = "events"
+urlpatterns = [
+ path("", IndexView.as_view(), name="index"),
+ path("<path:path>/", PageView.as_view(), name="page"),
+]
diff --git a/pydis_site/apps/events/views/__init__.py b/pydis_site/apps/events/views/__init__.py
new file mode 100644
index 00000000..8a107e2f
--- /dev/null
+++ b/pydis_site/apps/events/views/__init__.py
@@ -0,0 +1,4 @@
+from .index import IndexView
+from .page import PageView
+
+__all__ = ["IndexView", "PageView"]
diff --git a/pydis_site/apps/events/views/index.py b/pydis_site/apps/events/views/index.py
new file mode 100644
index 00000000..7ffba74a
--- /dev/null
+++ b/pydis_site/apps/events/views/index.py
@@ -0,0 +1,7 @@
+from django.views.generic import TemplateView
+
+
+class IndexView(TemplateView):
+ """Events index page view."""
+
+ template_name = "events/index.html"
diff --git a/pydis_site/apps/events/views/page.py b/pydis_site/apps/events/views/page.py
new file mode 100644
index 00000000..f4c37aeb
--- /dev/null
+++ b/pydis_site/apps/events/views/page.py
@@ -0,0 +1,25 @@
+from typing import List
+
+from django.conf import settings
+from django.http import Http404
+from django.views.generic import TemplateView
+
+
+class PageView(TemplateView):
+ """Handles event pages showing."""
+
+ def get_template_names(self) -> List[str]:
+ """Get specific template names."""
+ path: str = self.kwargs['path']
+ page_path = settings.PAGES_PATH / path
+ if page_path.is_dir():
+ page_path = page_path / "_index.html"
+ path = f"{path}/_index.html"
+ else:
+ page_path = settings.PAGES_PATH / f"{path}.html"
+ path = f"{path}.html"
+
+ if not page_path.exists():
+ raise Http404
+
+ return [f"events/{settings.PAGES_PATH.name}/{path}"]
diff --git a/pydis_site/apps/home/urls.py b/pydis_site/apps/home/urls.py
index d2172c40..bd7c0625 100644
--- a/pydis_site/apps/home/urls.py
+++ b/pydis_site/apps/home/urls.py
@@ -9,4 +9,5 @@ urlpatterns = [
path('admin/', admin.site.urls),
path('resources/', include('pydis_site.apps.resources.urls')),
path('articles/', include('pydis_site.apps.content.urls')),
+ path('events/', include('pydis_site.apps.events.urls', namespace='events')),
]