From 9149973c2a846bddf8690cbd392b2f85bfdd217f Mon Sep 17 00:00:00 2001 From: ks129 <45097959+ks129@users.noreply.github.com> Date: Mon, 26 Oct 2020 19:44:54 +0200 Subject: Create event page view --- pydis_site/apps/events/views/page.py | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 pydis_site/apps/events/views/page.py diff --git a/pydis_site/apps/events/views/page.py b/pydis_site/apps/events/views/page.py new file mode 100644 index 00000000..fe39a98c --- /dev/null +++ b/pydis_site/apps/events/views/page.py @@ -0,0 +1,31 @@ +from pathlib import Path + +from django.conf import settings +from django.core.handlers.wsgi import WSGIRequest +from django.http import Http404, HttpResponse +from django.template import Context, Template +from django.views import View + +PAGES_PATH = Path(settings.BASE_DIR, "pydis_site", "apps", "events", "pages") + + +class PageView(View): + """Handles event pages showing.""" + + def get(self, request: WSGIRequest, path: str) -> HttpResponse: + """Render event page rendering based on path.""" + # We need to get rid from trailing slash when path have this + if path.endswith("/"): + path = path[:-1] + + page_path = PAGES_PATH.joinpath(path) + if page_path.exists() and page_path.is_dir(): + page_path = page_path.joinpath("_index.html") + else: + page_path = PAGES_PATH.joinpath(f"{path}.html") + + if not page_path.exists(): + raise Http404 + + template = Template(page_path.read_text()) + return HttpResponse(template.render(Context())) -- cgit v1.2.3