from bpcms.models import CSSDocument, Document, Folder
-from django.http import Http404
+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,)
c = {
"content" : doc.content,