Cleanup for easier builds using hudson.
[redakcja.git] / apps / wiki / views.py
index e466d6a..46f0665 100644 (file)
@@ -3,7 +3,7 @@ import os
 from django.conf import settings
 
 from django.views.generic.simple import direct_to_template
-from django.views.decorators.http import require_POST
+from django.views.decorators.http import require_POST, require_GET
 from django.core.urlresolvers import reverse
 from wiki.helpers import JSONResponse, JSONFormInvalid, JSONServerError, ajax_require_permission
 from django import http
@@ -42,9 +42,10 @@ def document_list(request, template_name='wiki/document_list.html'):
 
 @never_cache
 def document_detail(request, name, template_name='wiki/document_details.html'):
+    storage = getstorage()
 
     try:
-        document = getstorage().get(name)
+        document = storage.get(name)
     except DocumentNotFound:
         return http.HttpResponseRedirect(reverse("wiki_create_missing", args=[name]))
 
@@ -64,11 +65,38 @@ def document_detail(request, name, template_name='wiki/document_details.html'):
         'document_meta': document.meta,
         'forms': {
             "text_save": DocumentTextSaveForm(prefix="textsave"),
-            "add_tag": DocumentTagForm(prefix="addtag")
+            "add_tag": DocumentTagForm(prefix="addtag"),
         },
     })
 
 
+@require_GET
+def document_detail_readonly(request, name, template_name='wiki/document_details_readonly.html'):
+    storage = getstorage()
+
+    try:
+        revision = request.GET['revision']
+        document = storage.get(name, revision)
+    except (KeyError, DocumentNotFound) as e:
+        raise http.Http404
+
+    access_time = datetime.now()
+    last_documents = request.session.get("wiki_last_docs", {})
+    last_documents[name] = access_time
+
+    if len(last_documents) > MAX_LAST_DOCS:
+        oldest_key = min(last_documents, key=last_documents.__getitem__)
+        del last_documents[oldest_key]
+    request.session['wiki_last_docs'] = last_documents
+
+    return direct_to_template(request, template_name, extra_context={
+        'document': document,
+        'document_name': document.name,
+        'document_info': dict(document.info(), readonly=True),
+        'document_meta': document.meta,
+    })
+
+
 def document_create_missing(request, name):
     storage = getstorage()