diff --git a/apps/filebrowser/src/filebrowser/api.py b/apps/filebrowser/src/filebrowser/api.py index e8b0c80b3d..ff649a7d99 100644 --- a/apps/filebrowser/src/filebrowser/api.py +++ b/apps/filebrowser/src/filebrowser/api.py @@ -16,6 +16,10 @@ # limitations under the License. import logging +import posixpath + +from django.http import HttpResponse +from django.utils.translation import gettext as _ from desktop.lib.django_util import JsonResponse from desktop.lib import fsmanager @@ -80,3 +84,16 @@ def get_filesystems_with_home_dirs(request): # Using as a public API only for no }) return JsonResponse(filesystems, safe=False) + + +@error_handler +def mkdir(request): + path = request.POST.get('path') + name = request.POST.get('name') + + if name and (posixpath.sep in name or "#" in name): + raise Exception(_("Error creating %s directory. Slashes or hashes are not allowed in directory name." % name)) + + request.fs.mkdir(request.fs.join(path, name)) + return HttpResponse(status=200) + diff --git a/desktop/core/src/desktop/api_public.py b/desktop/core/src/desktop/api_public.py index e970813b56..5e36031f47 100644 --- a/desktop/core/src/desktop/api_public.py +++ b/desktop/core/src/desktop/api_public.py @@ -217,7 +217,7 @@ def storage_upload_file(request): @api_view(["POST"]) def storage_mkdir(request): django_request = get_django_request(request) - return filebrowser_views.mkdir(django_request) + return filebrowser_api.mkdir(django_request) # Importer