X-Git-Url: https://git.sommitrealweird.co.uk/sommitrealweird.git/blobdiff_plain/acedb5e82f30e6502e2801db9f8d64d879f44347..refs/heads/django-4.2:/sommitrealweird/bpcms/views.py diff --git a/sommitrealweird/bpcms/views.py b/sommitrealweird/bpcms/views.py index 9cb3e42..82dfb56 100644 --- a/sommitrealweird/bpcms/views.py +++ b/sommitrealweird/bpcms/views.py @@ -1,33 +1,44 @@ from bpcms.models import CSSDocument, Document, Folder from django.http import Http404, HttpResponse +from django.shortcuts import render from django.template import RequestContext, loader +import sys -def document_view(request, slug=None, folders=None): - if folders == None and slug == None: +def document_view(request, path = None): + + if path == None: raise Http404() + folders = path.split("/") + slug = None folder = None if folders != None: - folders = folders.split('/') resfolder = None - for folder in folders: + prevfolder = None + for i,folder_name in enumerate(folders): try: if resfolder: - resfolder = Folder.objects.get(slug__exact=folder, parent__exact=resfolder) + resfolder = Folder.objects.get(slug__exact=folder_name, parent__exact=resfolder) else: - resfolder = Folder.objects.get(slug__exact=folder, parent__isnull=True) + resfolder = Folder.objects.get(slug__exact=folder_name, parent__isnull=True) resfolder = resfolder.id except: - raise Http404 + slug = folders[i] + folders = folders[:i] + break try: - folder = Folder.objects.get(pk=resfolder) + if resfolder != None: + folder = Folder.objects.get(pk=resfolder) except: - raise Http404 + raise Http404("Badgers") + + if slug == None: + slug = "index" if folder != None: try: - if not request.user.is_authenticated(): + if not request.user.is_authenticated: doc = Document.objects.get(slug__exact=slug, islive__exact=True, folder__exact=folder) else: @@ -40,10 +51,10 @@ def document_view(request, slug=None, folders=None): else: doc = Document.objects.get(slug__exact='index', folder__exact=folder) except: - raise Http404 + raise Http404(folder + "/" + slug) else: try: - if not request.user.is_authenticated(): + if not request.user.is_authenticated: doc = Document.objects.get(slug__exact=slug, islive__exact=True, folder__isnull=True) else: doc = Document.objects.get(slug__exact=slug, folder__isnull=True) @@ -55,16 +66,14 @@ def document_view(request, slug=None, folders=None): else: doc = Document.objects.get(slug__exact='index', folder__exact=folder) except: - raise Http404 + raise Http404(slug) template_name = "bpcms/%s.html" %(doc.format,) - t = loader.get_template(template_name) - c = RequestContext(request, - { + c = { "content" : doc.content, "title" : doc.title, "extracss" : doc.extracss.all(), - }) - return HttpResponse(t.render(c)) + } + return render(request, template_name, c) def css_view(request, slug): cssdoc = CSSDocument.objects.get(slug=slug) @@ -72,4 +81,4 @@ def css_view(request, slug): raise Http404() return HttpResponse(cssdoc.content, content_type="text/css") - +