Unicode errors in filebrowser. Refs #372.
[redakcja.git] / apps / wiki / views.py
index 9a156a4..eff1f1d 100644 (file)
@@ -1,35 +1,47 @@
+import os
+
+from django.conf import settings
 from django.views.generic.simple import direct_to_template
 from django.views.generic.simple import direct_to_template
-from django.http import HttpResponse
+from django.http import HttpResponse, Http404
 from django.utils import simplejson as json
 
 from wiki.models import storage, Document, DocumentNotFound
 from wiki.forms import DocumentForm
 
 from django.utils import simplejson as json
 
 from wiki.models import storage, Document, DocumentNotFound
 from wiki.forms import DocumentForm
 
-
-def document_list(request, template_name='wiki/document_list.html'):
-    return direct_to_template(request, template_name, extra_context={
+def document_list(request, template_name = 'wiki/document_list.html'):
+    return direct_to_template(request, template_name, extra_context = {
         'document_list': storage.all(),
     })
 
 
         'document_list': storage.all(),
     })
 
 
-def document_detail(request, name, template_name='wiki/document_details.html'):
+def document_detail(request, name, template_name = 'wiki/document_details.html'):
     try:
         document = storage.get(name)
     except DocumentNotFound:
     try:
         document = storage.get(name)
     except DocumentNotFound:
-        document = Document(storage, name=name, text='')
-    
+        document = Document(storage, name = name, text = '')
+
 
     if request.method == 'POST':
 
     if request.method == 'POST':
-        form = DocumentForm(request.POST, instance=document)
+        form = DocumentForm(request.POST, instance = document)
         if form.is_valid():
             document = form.save()
             return HttpResponse(json.dumps({'text': document.plain_text(), 'meta': document.meta(), 'revision': document.revision()}))
         else:
             return HttpResponse(json.dumps({'errors': form.errors}))
     else:
         if form.is_valid():
             document = form.save()
             return HttpResponse(json.dumps({'text': document.plain_text(), 'meta': document.meta(), 'revision': document.revision()}))
         else:
             return HttpResponse(json.dumps({'errors': form.errors}))
     else:
-        form = DocumentForm(instance=document)
-    
-    return direct_to_template(request, template_name, extra_context={
+        form = DocumentForm(instance = document)
+
+    return direct_to_template(request, template_name, extra_context = {
         'document': document,
         'form': form,
     })
         'document': document,
         'form': form,
     })
+
+
+def document_gallery(request, directory):
+    try:
+        base_dir = os.path.join(settings.MEDIA_ROOT, settings.FILEBROWSER_DIRECTORY, directory)
+        images = ['%s%s%s/%s' % (settings.MEDIA_URL, settings.FILEBROWSER_DIRECTORY, directory, f) for f in os.listdir(base_dir) if os.path.splitext(f)[1].lower() in ('.jpg', '.jpeg', '.png')]
+        images.sort()
+        return HttpResponse(json.dumps(images))
+    except (IndexError, OSError), e:
+        raise Http404