aboutsummaryrefslogtreecommitdiffstats
path: root/pydis_site/apps
diff options
context:
space:
mode:
authorGravatar Jeremiah Boby <[email protected]>2020-11-22 19:54:29 +0000
committerGravatar GitHub <[email protected]>2020-11-22 19:54:29 +0000
commitdbbe0175e13bbd9c6dcd4afc94797644ae676d55 (patch)
treed234786ca118fd5e80bb73e1f81e98690fb0a32a /pydis_site/apps
parentMerge pull request #395 from ks129/resources-home (diff)
parentUse URL tag for code jam 7 page (diff)
Merge pull request #417 from ks129/events-app
Dewikification - Create events 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.py3
-rw-r--r--pydis_site/apps/resources/views/resources.py2
11 files changed, 97 insertions, 2 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 b2fa6004..d7db6ff1 100644
--- a/pydis_site/apps/home/urls.py
+++ b/pydis_site/apps/home/urls.py
@@ -1,5 +1,5 @@
from django.contrib import admin
-from django.urls import path
+from django.urls import include, path
from .views import HomeView
@@ -8,4 +8,5 @@ urlpatterns = [
path('', HomeView.as_view(), name='home'),
path('admin/', admin.site.urls),
path('resources/', include('pydis_site.apps.resources.urls')),
+ path('events/', include('pydis_site.apps.events.urls', namespace='events')),
]
diff --git a/pydis_site/apps/resources/views/resources.py b/pydis_site/apps/resources/views/resources.py
index e770954b..25ce3e50 100644
--- a/pydis_site/apps/resources/views/resources.py
+++ b/pydis_site/apps/resources/views/resources.py
@@ -1,6 +1,6 @@
from django.views.generic import TemplateView
-
+
class ResourcesView(TemplateView):
"""View for resources index page."""