X-Git-Url: https://git.sommitrealweird.co.uk/sommitrealweird.git/blobdiff_plain/56b2cdf3569443cf4504fe085de9db0466dcd09f..refs/heads/django-4.2:/sommitrealweird/bpcms/views.py?ds=sidebyside diff --git a/sommitrealweird/bpcms/views.py b/sommitrealweird/bpcms/views.py index d98fa8c..82dfb56 100644 --- a/sommitrealweird/bpcms/views.py +++ b/sommitrealweird/bpcms/views.py @@ -1,53 +1,84 @@ -from bpcms.models import Document, Folder +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: - doc = Document.objects.get(slug__exact=slug, islive__exact=True, folder__exact=folder) + if not request.user.is_authenticated: + doc = Document.objects.get(slug__exact=slug, islive__exact=True, folder__exact=folder) + else: + + doc = Document.objects.get(slug__exact=slug, folder__exact=folder) except: try: folder = Folder.objects.get(slug__exact=slug, parent__exact=folder) - doc = Document.objects.get(slug__exact='index', islive__exact=True, folder__exact=folder) + if not request.user.is_authenticated(): + doc = Document.objects.get(slug__exact='index', islive__exact=True, folder__exact=folder) + else: + doc = Document.objects.get(slug__exact='index', folder__exact=folder) except: - raise Http404 + raise Http404(folder + "/" + slug) else: try: - doc = Document.objects.get(slug__exact=slug, islive__exact=True, folder__isnull=True) + 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) except: try: folder = Folder.objects.get(slug__exact=slug, parent__isnull=True) - doc = Document.objects.get(slug__exact='index', islive__exact=True, folder__exact=folder) + if not request.user.is_authenticated(): + doc = Document.objects.get(slug__exact='index', islive__exact=True, folder__exact=folder) + 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, - }) - return HttpResponse(t.render(c)) + "extracss" : doc.extracss.all(), + } + return render(request, template_name, c) + +def css_view(request, slug): + cssdoc = CSSDocument.objects.get(slug=slug) + if not cssdoc: + raise Http404() + + return HttpResponse(cssdoc.content, content_type="text/css") +