diff options
author | 2020-10-26 19:44:54 +0200 | |
---|---|---|
committer | 2020-10-26 19:44:54 +0200 | |
commit | 9149973c2a846bddf8690cbd392b2f85bfdd217f (patch) | |
tree | 915ef04ef24fb70b112f72c34d35f6ec4991f9f0 /pydis_site/apps/events | |
parent | Create events index page view (diff) |
Create event page view
Diffstat (limited to 'pydis_site/apps/events')
-rw-r--r-- | pydis_site/apps/events/views/page.py | 31 |
1 files changed, 31 insertions, 0 deletions
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())) |