Librarian in regular requirements.
[redakcja.git] / apps / wiki / views.py
index 1481734..e1ef6ae 100644 (file)
@@ -1,6 +1,9 @@
+# -*- coding: utf-8 -*-
 from datetime import datetime
 import os
 import logging
+from time import mktime
+import urllib
 
 from django.conf import settings
 from django.core.urlresolvers import reverse
@@ -51,8 +54,8 @@ def editor(request, slug, chunk=None, template_name='wiki/document_details.html'
 
     access_time = datetime.now()
     last_books = request.session.get("wiki_last_books", {})
-    last_books[slug, chunk.slug] = {
-        'time': access_time,
+    last_books[reverse(editor, args=[chunk.book.slug, chunk.slug])] = {
+        'time': mktime(access_time.timetuple()),
         'title': chunk.pretty_name(),
         }
 
@@ -86,7 +89,7 @@ def editor_readonly(request, slug, chunk=None, template_name='wiki/document_deta
     access_time = datetime.now()
     last_books = request.session.get("wiki_last_books", {})
     last_books[slug, chunk.slug] = {
-        'time': access_time,
+        'time': mktime(access_time.timetuple()),
         'title': chunk.book.title,
         }
 
@@ -210,15 +213,17 @@ def gallery(request, directory):
                     smart_unicode(directory))
 
         def map_to_url(filename):
-            return ("%s/%s" % (base_url, smart_unicode(filename))).replace('?', '%3f')
+            return urllib.quote(("%s/%s" % (base_url, smart_unicode(filename))).encode('utf-8'))
 
         def is_image(filename):
-            return os.path.splitext(f)[1].lower() in (u'.jpg', u'.jpeg', u'.png')
+            return os.path.splitext(filename)[1].lower() in (u'.jpg', u'.jpeg', u'.png')
 
         images = [map_to_url(f) for f in map(smart_unicode, os.listdir(base_dir)) if is_image(f)]
         images.sort()
 
-        if not request.user.is_authenticated():
+        books = Book.objects.filter(gallery=directory)
+
+        if not all(book.public for book in books) and not request.user.is_authenticated():
             return HttpResponseForbidden("Not authorized.")
 
         return JSONResponse(images)
@@ -277,6 +282,9 @@ def history(request, chunk_id):
                 "date": localize(change.created_at),
                 "publishable": _("Publishable") + "\n" if change.publishable else "",
                 "tag": ',\n'.join(unicode(tag) for tag in change.tags.all()),
+                "published": _("Published") + ": " + \
+                    localize(change.publish_log.order_by('-book_record__timestamp')[0].book_record.timestamp) \
+                    if change.publish_log.exists() else "",
             })
     return JSONResponse(changes)