diff --git a/openstack_dashboard/api/rest/swift.py b/openstack_dashboard/api/rest/swift.py index 1dd4ee158..5deeffa58 100644 --- a/openstack_dashboard/api/rest/swift.py +++ b/openstack_dashboard/api/rest/swift.py @@ -17,6 +17,7 @@ import os from django import forms from django.http import StreamingHttpResponse +from django.utils.http import urlunquote from django.views.decorators.csrf import csrf_exempt from django.views import generic import six @@ -120,6 +121,8 @@ class Objects(generic.View): :return: """ path = request.GET.get('path') + if path is not None: + path = urlunquote(path) objects = api.swift.swift_get_objects( request, diff --git a/openstack_dashboard/dashboards/project/static/dashboard/project/containers/containers-model.service.js b/openstack_dashboard/dashboards/project/static/dashboard/project/containers/containers-model.service.js index 420482f5b..e9fb9864b 100644 --- a/openstack_dashboard/dashboards/project/static/dashboard/project/containers/containers-model.service.js +++ b/openstack_dashboard/dashboards/project/static/dashboard/project/containers/containers-model.service.js @@ -121,7 +121,7 @@ delimiter: model.DELIMETER }; if (folder) { - spec.path = folder + model.DELIMETER; + spec.path = encodeURIComponent(folder) + model.DELIMETER; } return swiftAPI.getObjects(name, spec).then(function onObjects(response) { @@ -279,7 +279,7 @@ state.counted.folders++; var spec = { delimiter: model.DELIMETER, - path: item.path + model.DELIMETER + path: encodeURIComponent(item.path).replace(/%2F/g, '/') }; return swiftAPI.getObjects(model.container.name, spec) .then(function objects(response) { diff --git a/openstack_dashboard/dashboards/project/static/dashboard/project/containers/containers-model.service.spec.js b/openstack_dashboard/dashboards/project/static/dashboard/project/containers/containers-model.service.spec.js index 4fcfc9677..e3e5e565a 100644 --- a/openstack_dashboard/dashboards/project/static/dashboard/project/containers/containers-model.service.spec.js +++ b/openstack_dashboard/dashboards/project/static/dashboard/project/containers/containers-model.service.spec.js @@ -244,7 +244,7 @@ beforeEach(function before() { spyOn(swiftAPI, 'getObjects').and.callFake(function fake(container, spec) { var deferred = $q.defer(); - var items = fakeSwift[spec.path]; + var items = fakeSwift[spec.path + '/']; expect(items).toBeDefined(); // sanity check deferred.resolve({data: {items: items}}); return deferred.promise; diff --git a/openstack_dashboard/dashboards/project/static/dashboard/project/containers/create-folder-modal.html b/openstack_dashboard/dashboards/project/static/dashboard/project/containers/create-folder-modal.html index c2c83b827..4667415dd 100644 --- a/openstack_dashboard/dashboards/project/static/dashboard/project/containers/create-folder-modal.html +++ b/openstack_dashboard/dashboards/project/static/dashboard/project/containers/create-folder-modal.html @@ -8,7 +8,7 @@ -