from django.http import HttpResponseRedirect, Http404 from django.utils.translation import get_language from django.views import generic from django.urls import reverse from nsfw import views as nsfw from .models import Page, PageContent def index(request): default_page = Page.objects.filter(default=True).first() return HttpResponseRedirect(reverse("page", args=(default_page.slug,))) class PageView(generic.DetailView): model = PageContent context_object_name = "page" template_name = "pages/page.html" def dispatch(self, request, *args, **kwargs): if self.get_object().page.is_nsfw: if not nsfw.is_nsfw_allowed(request): return nsfw.redirect(request) else: nsfw.alert(request) return super().dispatch(request, *args, **kwargs) def get_object(self): obj = PageContent.objects.filter( language=get_language(), page__slug=self.kwargs["slug"] ).first() if obj is None: raise Http404("Page not found: %s" % self.kwargs["slug"]) return obj