fix unicode handling
[redakcja.git] / apps / fileupload / views.py
index cb7873b..a2025fe 100644 (file)
@@ -4,6 +4,7 @@ from urllib import quote
 from django.conf import settings
 from django.http import HttpResponse, HttpResponseRedirect, HttpResponseForbidden, Http404
 from django.utils.decorators import method_decorator
+from django.utils.encoding import smart_bytes
 from django.views.decorators.vary import vary_on_headers
 from django.views.generic import FormView, View
 from .forms import UploadForm
@@ -19,7 +20,7 @@ else:
     def thumbnail(relpath):
         try:
             return default.backend.get_thumbnail(relpath, "x50").url
-        except IOError:
+        except (IOError, ValueError):
             # That's not an image. No thumb.
             return None
 
@@ -41,7 +42,7 @@ class UploadView(FormView):
 
     def get_directory(self):
         """Directory relative to MEDIA_ROOT. Must end with a slash."""
-        return self.kwargs['path'].encode('utf-8')
+        return self.kwargs['path']
 
     def breadcrumbs(self):
         """List of tuples (name, url) or just (name,) for breadcrumbs.
@@ -74,9 +75,10 @@ class UploadView(FormView):
         Makes sure it's inside MEDIA_ROOT.
         
         """
+        filename = smart_bytes(filename)
         path = os.path.abspath(os.path.join(
                 settings.MEDIA_ROOT,
-                self.get_directory(),
+                smart_bytes(self.get_directory()),
                 filename))
         if not path.startswith(settings.MEDIA_ROOT):
             raise Http404