aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar ks129 <[email protected]>2020-10-30 19:12:41 +0200
committerGravatar ks129 <[email protected]>2020-10-30 19:12:41 +0200
commit29446162799358d751d3da9f9aee4ee8ae0b4496 (patch)
tree1a6e646c32d9f97857351e4f19829a3772a60274
parentUse Django URL generation for category URL (diff)
Port views to TemplateView for content app
-rw-r--r--pydis_site/apps/content/views/article.py43
-rw-r--r--pydis_site/apps/content/views/articles.py18
-rw-r--r--pydis_site/apps/content/views/category.py23
3 files changed, 40 insertions, 44 deletions
diff --git a/pydis_site/apps/content/views/article.py b/pydis_site/apps/content/views/article.py
index 42b92cee..90688c6f 100644
--- a/pydis_site/apps/content/views/article.py
+++ b/pydis_site/apps/content/views/article.py
@@ -4,21 +4,21 @@ from django.core.handlers.wsgi import WSGIRequest
from django.http import HttpResponse
from django.shortcuts import render
from django.views import View
+from django.views.generic import TemplateView
from pydis_site.apps.content.utils import get_article, get_category, get_github_information
-class ArticleView(View):
+class ArticleView(TemplateView):
"""Shows specific guide page."""
- def get(
- self,
- request: WSGIRequest,
- article: str,
- category: Optional[str] = None
- ) -> HttpResponse:
- """Collect guide content and display it. When guide don't exist, return 404."""
- article_result = get_article(article, category)
+ template_name = "content/article.html"
+
+ def get_context_data(self, **kwargs):
+ """Add custom context info about article."""
+ context = super().get_context_data(**kwargs)
+ category = self.kwargs.get("category")
+ article_result = get_article(self.kwargs["article"], category)
if category is not None:
category_data = get_category(category)
@@ -26,18 +26,13 @@ class ArticleView(View):
else:
category_data = {"name": None, "raw_name": None}
- return render(
- request,
- "content/article.html",
- {
- "article": article_result,
- "category_data": category_data,
- "relevant_links": {
- link: value for link, value in zip(
- article_result["metadata"].get("relevant_links", "").split(","),
- article_result["metadata"].get("relevant_link_values", "").split(",")
- ) if link != "" and value != ""
- },
- "github_data": get_github_information(article, category),
- }
- )
+ context["article"] = article_result
+ context["category_data"] = category_data
+ context["relevant_links"] = {
+ link: value for link, value in zip(
+ article_result["metadata"].get("relevant_links", "").split(","),
+ article_result["metadata"].get("relevant_link_values", "").split(",")
+ ) if link != "" and value != ""
+ }
+ context["github_data"] = get_github_information(self.kwargs["article"], category)
+ return context
diff --git a/pydis_site/apps/content/views/articles.py b/pydis_site/apps/content/views/articles.py
index cce601e1..d66425c3 100644
--- a/pydis_site/apps/content/views/articles.py
+++ b/pydis_site/apps/content/views/articles.py
@@ -2,17 +2,19 @@ from django.core.handlers.wsgi import WSGIRequest
from django.http import HttpResponse
from django.shortcuts import render
from django.views import View
+from django.views.generic import TemplateView
from pydis_site.apps.content.utils import get_articles, get_categories
-class ArticlesView(View):
+class ArticlesView(TemplateView):
"""Shows all content and categories."""
- def get(self, request: WSGIRequest) -> HttpResponse:
- """Shows all content and categories."""
- return render(
- request,
- "content/articles.html",
- {"content": get_articles(), "categories": get_categories()}
- )
+ template_name = "content/articles.html"
+
+ def get_context_data(self, **kwargs):
+ """Add articles and categories data to template context."""
+ context = super().get_context_data(**kwargs)
+ context["content"] = get_articles()
+ context["categories"] = get_categories()
+ return context
diff --git a/pydis_site/apps/content/views/category.py b/pydis_site/apps/content/views/category.py
index 9d2a978e..9c1da99c 100644
--- a/pydis_site/apps/content/views/category.py
+++ b/pydis_site/apps/content/views/category.py
@@ -2,21 +2,20 @@ from django.core.handlers.wsgi import WSGIRequest
from django.http import HttpResponse
from django.shortcuts import render
from django.views import View
+from django.views.generic import TemplateView
from pydis_site.apps.content.utils import get_articles, get_category
-class CategoryView(View):
+class CategoryView(TemplateView):
"""Handles content category page."""
- def get(self, request: WSGIRequest, category: str) -> HttpResponse:
- """Handles page that displays category content."""
- return render(
- request,
- "content/category.html",
- {
- "category_info": get_category(category),
- "content": get_articles(category),
- "category_name": category
- }
- )
+ template_name = "content/category.html"
+
+ def get_context_data(self, **kwargs):
+ """Add category data to context."""
+ context = super().get_context_data(**kwargs)
+ context["category_info"] = get_category(self.kwargs["category"])
+ context["content"] = get_articles(self.kwargs["category"])
+ context["category_name"] = self.kwargs["category"]
+ return context