From d6a9988a92f32c1dfa6893526f03bac7ac20b4b4 Mon Sep 17 00:00:00 2001 From: lian Date: Sat, 28 Apr 2018 11:34:53 +0800 Subject: [PATCH] update create dir api recreate dir when failed when `file already exists'. --- seahub/api2/views.py | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/seahub/api2/views.py b/seahub/api2/views.py index 861b5ff559..adad673999 100644 --- a/seahub/api2/views.py +++ b/seahub/api2/views.py @@ -3108,14 +3108,21 @@ class DirView(APIView): error_msg = 'Permission denied.' return api_error(status.HTTP_403_FORBIDDEN, error_msg) - new_dir_name = check_filename_with_rename(repo_id, parent_dir, new_dir_name) - try: - seafile_api.post_dir(repo_id, parent_dir, - new_dir_name, username) - except SearpcError as e: - logger.error(e) - return api_error(HTTP_520_OPERATION_FAILED, - 'Failed to make directory.') + retry_count = 0 + while retry_count < 10: + new_dir_name = check_filename_with_rename(repo_id, + parent_dir, new_dir_name) + try: + seafile_api.post_dir(repo_id, + parent_dir, new_dir_name, username) + break + except SearpcError as e: + if str(e) == 'file already exists': + retry_count += 1 + else: + logger.error(e) + return api_error(HTTP_520_OPERATION_FAILED, + 'Failed to make directory.') else: if not is_seafile_pro(): return api_error(status.HTTP_400_BAD_REQUEST,