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:
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)
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)
raise Http404()
return HttpResponse(cssdoc.content, content_type="text/css")
-
+