mirror of
https://github.com/boostorg/website-v2.git
synced 2026-01-19 04:42:17 +00:00
79
ak/views.py
79
ak/views.py
@@ -1,8 +1,14 @@
|
||||
import requests
|
||||
from django.core.exceptions import PermissionDenied
|
||||
from django.http import Http404, HttpResponse
|
||||
from django.shortcuts import render
|
||||
from django.views import View
|
||||
from django.views.generic import TemplateView
|
||||
|
||||
from config.settings import JDOODLE_API_CLIENT_ID, JDOODLE_API_CLIENT_SECRET
|
||||
from libraries.models import Category, Library
|
||||
from versions.models import Version
|
||||
|
||||
|
||||
class HomepageView(TemplateView):
|
||||
"""
|
||||
@@ -13,6 +19,79 @@ class HomepageView(TemplateView):
|
||||
template_name = "homepage.html"
|
||||
|
||||
|
||||
class HomepageBetaView(TemplateView):
|
||||
"""
|
||||
Boost homepage
|
||||
"""
|
||||
|
||||
template_name = "homepage_beta.html"
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super().get_context_data(**kwargs)
|
||||
libraries, categories = [], []
|
||||
if "category" in self.request.GET and self.request.GET["category"] != "":
|
||||
context["category"] = Category.objects.get(
|
||||
slug=self.request.GET["category"]
|
||||
)
|
||||
libraries = Library.objects.filter(categories=context["category"]).order_by(
|
||||
"name"
|
||||
)
|
||||
else:
|
||||
context["category"] = None
|
||||
libraries = Library.objects.all().order_by("name")
|
||||
categories = Category.objects.all().order_by("name")
|
||||
if "version" in self.request.GET:
|
||||
context["version"] = Version.objects.filter(
|
||||
slug=self.request.GET["version"]
|
||||
).first()
|
||||
else:
|
||||
context["version"] = Version.objects.most_recent()
|
||||
if "library" in self.request.GET:
|
||||
context["library"] = Library.objects.filter(
|
||||
slug=self.request.GET["library"]
|
||||
).first()
|
||||
categories = context["library"].categories.order_by("name")
|
||||
if "category" in self.request.GET and self.request.GET["category"] != "":
|
||||
context["category"] = categories.filter(
|
||||
slug=self.request.GET["category"]
|
||||
).first()
|
||||
libraries = (
|
||||
Library.objects.filter(categories__in=categories)
|
||||
.order_by("name")
|
||||
.all()
|
||||
)
|
||||
else:
|
||||
context["library"] = (
|
||||
libraries[0] if libraries else Library.objects.order_by("name").first()
|
||||
)
|
||||
if "category" in self.request.GET and self.request.GET["category"] != "":
|
||||
context["category"] = categories.filter(
|
||||
slug=self.request.GET["category"]
|
||||
).first()
|
||||
context["versions"] = Version.objects.active().order_by("-release_date")
|
||||
context["libraries"] = libraries
|
||||
context["categories"] = categories
|
||||
return context
|
||||
|
||||
def post(self, request, *args, **kwargs):
|
||||
code = request.POST.get("code", "")
|
||||
if not code:
|
||||
return render(request, self.template_name)
|
||||
api_url = "https://api.jdoodle.com/v1/execute"
|
||||
data = {
|
||||
"clientId": JDOODLE_API_CLIENT_ID,
|
||||
"clientSecret": JDOODLE_API_CLIENT_SECRET,
|
||||
"script": code,
|
||||
"language": "cpp",
|
||||
"versionIndex": "3",
|
||||
}
|
||||
response = requests.post(api_url, json=data)
|
||||
result = response.json()
|
||||
output = result.get("output", "")
|
||||
error = result.get("error", "")
|
||||
return render(request, self.template_name, {"output": output, "error": error})
|
||||
|
||||
|
||||
class ForbiddenView(View):
|
||||
"""
|
||||
This view raises an exception to test our 403.html template
|
||||
|
||||
Reference in New Issue
Block a user