remove feincms3 dependency

This commit is contained in:
bkfox
2019-07-01 05:02:13 +02:00
parent 4b57cd6643
commit 4caca505c4
12 changed files with 254 additions and 103 deletions

View File

@ -1,22 +1,48 @@
from django.db.models import Q
from django.shortcuts import get_object_or_404, render
from django.views.generic.base import TemplateView
from feincms3.regions import Regions
from content_editor.contents import contents_for_item
from .models import Site, Page
from .renderer import site_renderer, page_renderer
def page_detail(request, path=None):
def route_page(request, path=None, *args, site=None, **kwargs):
# TODO/FIXME: django site framework | site from request host
# TODO: extra page kwargs (as in pepr)
site = Site.objects.all().order_by('-default').first() \
if site is None else site
page = get_object_or_404(
# TODO: published
Page.objects.all(),
Page.objects.select_subclasses()
.filter(Q(status=Page.STATUS.published) |
Q(status=Page.STATUS.announced)),
path="/{}/".format(path) if path else "/",
)
site = Site.objects.all().first()
return render(request, "aircox_web/page.html", {
'site': site,
"regions": Regions.from_item(site, renderer=site_renderer, timeout=60),
"page": page,
"page_regions": Regions.from_item(page, renderer=page_renderer, timeout=60),
})
kwargs['page'] = page
return page.view(request, *args, site=site, **kwargs)
class PageView(TemplateView):
""" Base view class for pages. """
template_name = 'aircox_web/page.html'
site = None
page = None
def get_context_data(self, **kwargs):
page = kwargs.setdefault('page', self.page or self.kwargs.get('site'))
site = kwargs.setdefault('site', self.site or self.kwargs.get('site'))
if kwargs.get('regions') is None:
contents = contents_for_item(page, page_renderer._renderers.keys())
kwargs['regions'] = contents.render_regions(page_renderer)
if kwargs.get('site_regions') is None:
contents = contents_for_item(site, site_renderer._renderers.keys())
kwargs['site_regions'] = contents.render_regions(site_renderer)
return super().get_context_data(**kwargs)