aboutsummaryrefslogtreecommitdiffstats
path: root/mediagoblin/submit/views.py
diff options
context:
space:
mode:
authordunkyp <dunkyp@gmail.com>2012-11-06 17:47:48 +0000
committerRodney Ewing <ewing.rj@gmail.com>2013-07-11 12:52:05 -0700
commit3aeca53c85981fa46d61b41a7cf648d90637eb62 (patch)
tree181b2b50feef47f1ad1dce32b2012788c0a92c85 /mediagoblin/submit/views.py
parent9609ddc0a6a071a2876cb1e2eff695f12f8fe39c (diff)
downloadmediagoblin-3aeca53c85981fa46d61b41a7cf648d90637eb62.tar.lz
mediagoblin-3aeca53c85981fa46d61b41a7cf648d90637eb62.tar.xz
mediagoblin-3aeca53c85981fa46d61b41a7cf648d90637eb62.zip
fixes the inability to upload non ascii filenames, werkzeug strips all non ascii chars and returns an empty string. This checks if the filename contains non asciis and if it does generates a uuid for filename. Also the request version of filename is used for generating alternative title for upload
cherry-picked from dunkyp. fixed conflicts and missing import.
Diffstat (limited to 'mediagoblin/submit/views.py')
-rw-r--r--mediagoblin/submit/views.py7
1 files changed, 6 insertions, 1 deletions
diff --git a/mediagoblin/submit/views.py b/mediagoblin/submit/views.py
index 64e6791b..0fe280f1 100644
--- a/mediagoblin/submit/views.py
+++ b/mediagoblin/submit/views.py
@@ -19,6 +19,7 @@ import mediagoblin.mg_globals as mg_globals
from os.path import splitext
import logging
+import uuid
_log = logging.getLogger(__name__)
@@ -53,6 +54,10 @@ def submit_start(request):
try:
filename = request.files['file'].filename
+ # If the filename contains non ascii generate a unique name
+ if not all(ord(c) < 128 for c in filename):
+ filename = unicode(uuid.uuid4()) + splitext(filename)[-1]
+
# Sniff the submitted media to determine which
# media plugin should handle processing
media_type, media_manager = sniff_media(
@@ -63,7 +68,7 @@ def submit_start(request):
entry.media_type = unicode(media_type)
entry.title = (
unicode(submit_form.title.data)
- or unicode(splitext(filename)[0]))
+ or unicode(splitext(request.files['file'].filename)[0]))
entry.description = unicode(submit_form.description.data)