rename 'content' to 'bpcms'
[sommitrealweird.git] / sommitrealweird / bpcms / views.py
diff --git a/sommitrealweird/bpcms/views.py b/sommitrealweird/bpcms/views.py
new file mode 100644 (file)
index 0000000..d98fa8c
--- /dev/null
@@ -0,0 +1,53 @@
+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))