--- /dev/null
+from bpcms.models import Document, Folder
+from django.http import Http404, HttpResponse
+from django.template import RequestContext, loader
+
+def document_view(request, slug=None, folders=None):
+ if folders == None and slug == None:
+ raise Http404()
+
+ folder = None
+
+ if folders != None:
+ folders = folders.split('/')
+ resfolder = None
+ for folder in folders:
+ try:
+ if resfolder:
+ resfolder = Folder.objects.get(slug__exact=folder, parent__exact=resfolder)
+ else:
+ resfolder = Folder.objects.get(slug__exact=folder, parent__isnull=True)
+ resfolder = resfolder.id
+ except:
+ raise Http404
+ try:
+ folder = Folder.objects.get(pk=resfolder)
+ except:
+ raise Http404
+
+ if folder != None:
+ try:
+ doc = Document.objects.get(slug__exact=slug, islive__exact=True, 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)
+ except:
+ raise Http404
+ else:
+ try:
+ doc = Document.objects.get(slug__exact=slug, islive__exact=True, 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)
+ except:
+ raise Http404
+ template_name = "bpcms/%s.html" %(doc.format,)
+ t = loader.get_template(template_name)
+ c = RequestContext(request,
+ {
+ "content" : doc.content,
+ "title" : doc.title,
+ })
+ return HttpResponse(t.render(c))