def delete(self, request, repo_id, format=None): # delete file repo = get_repo(repo_id) if not repo: return api_error(status.HTTP_404_NOT_FOUND, 'Repo not found.') resp = check_repo_access_permission(request, repo) if resp: return resp path = request.GET.get('p', None) if not path: return api_error(status.HTTP_400_BAD_REQUEST, 'Path is missing.') parent_dir = os.path.dirname(path) parent_dir_utf8 = os.path.dirname(path).encode('utf-8') file_name_utf8 = os.path.basename(path).encode('utf-8') try: seafserv_threaded_rpc.del_file(repo_id, parent_dir_utf8, file_name_utf8, request.user.username) except SearpcError, e: return api_error(HTTP_520_OPERATION_FAILED, "Failed to delete file.")
def delete(self, request, repo_id, format=None): # delete dir or file repo = get_repo(repo_id) if not repo: return api_error(status.HTTP_404_NOT_FOUND, 'Repo not found.') resp = check_repo_access_permission(request, repo) if resp: return resp path = request.GET.get('p', None) if not path: return api_error(status.HTTP_400_BAD_REQUEST, 'Path is missing.') if path == '/': # Can not delete root path. return api_error(status.HTTP_400_BAD_REQUEST, 'Path is invalid.') if path[-1] == '/': # Cut out last '/' if possible. path = path[:-1] parent_dir = os.path.dirname(path) parent_dir_utf8 = os.path.dirname(path).encode('utf-8') file_name_utf8 = os.path.basename(path).encode('utf-8') try: seafserv_threaded_rpc.del_file(repo_id, parent_dir_utf8, file_name_utf8, request.user.username) except SearpcError, e: return api_error(HTTP_520_OPERATION_FAILED, "Failed to delete file.")
def post(self, request, repo_id, format=None): repo = get_repo(repo_id) if not repo: return api_error(status.HTTP_404_NOT_FOUND, 'Repo not found.') resp = check_repo_access_permission(request, repo) if resp: return resp parent_dir = request.GET.get('p', '/') file_names = request.POST.get("file_names") if not parent_dir or not file_names: return api_error(status.HTTP_404_NOT_FOUND, 'File or directory not found.') names = file_names.split(':') names = map(lambda x: unquote(x).decode('utf-8'), names) for file_name in names: try: seafserv_threaded_rpc.del_file(repo_id, parent_dir, file_name, request.user.username) except SearpcError,e: return api_error(HTTP_520_OPERATION_FAILED, "Failed to delete file.")
def post(self, request, repo_id): resp = check_repo_access_permission(request, get_repo(repo_id)) if resp: return resp parent_dir = request.GET.get('p', '/') file_names = request.POST.get("file_names") if not parent_dir or not file_names: return api_error(request, '400') names = file_names.split(':') names = map(lambda x: unquote(x).decode('utf-8'), names) for file_name in names: try: seafserv_threaded_rpc.del_file(repo_id, parent_dir, file_name, request.user.username) except SearpcError,e: return api_error(request, '418', 'SearpcError:' + e.msg)
def post(self, request, repo_id, format=None): repo = get_repo(repo_id) if not repo: return api_error(status.HTTP_404_NOT_FOUND, 'Repo not found.') resp = check_repo_access_permission(request, repo) if resp: return resp parent_dir = request.GET.get('p', '/') file_names = request.POST.get("file_names") if not parent_dir or not file_names: return api_error(status.HTTP_404_NOT_FOUND, 'File or directory not found.') for file_name in file_names.split(':'): file_name = unquote(file_name.encode('utf-8')) try: seafserv_threaded_rpc.del_file(repo_id, parent_dir, file_name, request.user.username) except SearpcError, e: return api_error(HTTP_520_OPERATION_FAILED, "Failed to delete file.")