from django.utils.encoding import force_str
from django.utils.http import urlquote_plus
from django.views.decorators.http import require_POST
+from unidecode import unidecode
from catalogue import forms
from catalogue.forms import TagMultipleForm, TagSingleForm
path = settings.MEDIA_ROOT + uppath
if not os.path.isdir(path):
os.makedirs(path)
- dest_path = path + cover.name # UNSAFE
+ cover.name = unidecode(cover.name)
+ dest_path = path + cover.name
+ if not os.path.abspath(dest_path).startswith(os.path.abspath(path)):
+ raise Http404
with open(dest_path, 'w') as destination:
for chunk in cover.chunks():
destination.write(chunk)
from django.utils.decorators import method_decorator
from django.views.decorators.vary import vary_on_headers
from django.views.generic import FormView
+from unidecode import unidecode
+
from .forms import UploadForm
os.makedirs(path)
data = []
for f in flist:
+ f.name = unidecode(f.name)
with open(self.get_safe_path(f.name), 'w') as destination:
for chunk in f.chunks():
destination.write(chunk)