Skip to content

Commit fffe816

Browse files
Vaghinak BasentsyanVaghinak Basentsyan
authored andcommitted
Fixed SDK | Wrong log for create_folder
1 parent cc20eb3 commit fffe816

File tree

3 files changed

+58
-22
lines changed

3 files changed

+58
-22
lines changed

src/superannotate/lib/app/interface/sdk_interface.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -334,7 +334,7 @@ def create_folder(project: NotEmptyStr, folder_name: NotEmptyStr):
334334
logger.warning(
335335
f"Created folder has name {folder.name}, since folder with name {folder_name} already existed.",
336336
)
337-
logger.info(f"Folder {folder_name} created in project {project}")
337+
logger.info(f"Folder {folder.name} created in project {project}")
338338
return folder.to_dict()
339339
if res.errors:
340340
raise AppException(res.errors)
@@ -389,7 +389,7 @@ def get_folder_metadata(project: NotEmptyStr, folder_name: NotEmptyStr):
389389
"""
390390
result = controller.get_folder(project_name=project, folder_name=folder_name).data
391391
if not result:
392-
raise EmptyOutputError("Folder not found.")
392+
raise AppException("Folder not found.")
393393
return result.to_dict()
394394

395395

@@ -447,7 +447,7 @@ def rename_folder(project: Union[NotEmptyStr, dict], new_folder_name: NotEmptySt
447447
if res.errors:
448448
raise AppException(res.errors)
449449
logger.info(
450-
f"Folder {folder_name} renamed to {new_folder_name} in project {project_name}"
450+
f"Folder {folder_name} renamed to {res.data.name} in project {project_name}"
451451
)
452452

453453

src/superannotate/lib/core/usecases.py

Lines changed: 40 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -316,7 +316,7 @@ def validate_project_name(self):
316316
if self._projects.get_all(condition):
317317
logger.error("There are duplicated names.")
318318
raise AppValidationException(
319-
f"Project name {self._project.name} is not unique. "
319+
f"Project name {self._project_data['name']} is not unique. "
320320
f"To use SDK please make project names unique."
321321
)
322322

@@ -667,26 +667,25 @@ def __init__(
667667
def validate_folder(self):
668668
if not self._folder.name:
669669
raise AppValidationException("Folder name cannot be empty.")
670-
671-
def execute(self):
672-
if self.is_valid():
673-
if (
670+
if (
674671
len(
675672
set(self._folder.name).intersection(
676673
constances.SPECIAL_CHARACTERS_IN_PROJECT_FOLDER_NAMES
677674
)
678675
)
679676
> 0
680-
):
681-
self._folder.name = "".join(
682-
"_"
683-
if char in constances.SPECIAL_CHARACTERS_IN_PROJECT_FOLDER_NAMES
684-
else char
685-
for char in self._folder.name
686-
)
687-
logger.warning(
688-
"New folder name has special characters. Special characters will be replaced by underscores."
689-
)
677+
):
678+
self._folder.name = "".join(
679+
"_"
680+
if char in constances.SPECIAL_CHARACTERS_IN_PROJECT_FOLDER_NAMES
681+
else char
682+
for char in self._folder.name
683+
)
684+
logger.warning(
685+
"New folder name has special characters. Special characters will be replaced by underscores."
686+
)
687+
def execute(self):
688+
if self.is_valid():
690689
self._folder.project_id = self._project.uuid
691690
self._response.data = self._folders.insert(self._folder)
692691
return self._response
@@ -1009,11 +1008,33 @@ def __init__(
10091008
self._folders = folders
10101009
self._folder = folder
10111010

1011+
def validate_folder(self):
1012+
if not self._folder.name:
1013+
raise AppValidationException("Folder name cannot be empty.")
1014+
if (
1015+
len(
1016+
set(self._folder.name).intersection(
1017+
constances.SPECIAL_CHARACTERS_IN_PROJECT_FOLDER_NAMES
1018+
)
1019+
)
1020+
> 0
1021+
):
1022+
self._folder.name = "".join(
1023+
"_"
1024+
if char in constances.SPECIAL_CHARACTERS_IN_PROJECT_FOLDER_NAMES
1025+
else char
1026+
for char in self._folder.name
1027+
)
1028+
logger.warning(
1029+
"New folder name has special characters. Special characters will be replaced by underscores."
1030+
)
1031+
10121032
def execute(self):
1013-
is_updated = self._folders.update(self._folder)
1014-
if not is_updated:
1015-
self._response.errors = AppException("Couldn't rename folder.")
1016-
self._response.data = self._folder
1033+
if self.is_valid():
1034+
is_updated = self._folders.update(self._folder)
1035+
if not is_updated:
1036+
self._response.errors = AppException("Couldn't rename folder.")
1037+
self._response.data = self._folder
10171038
return self._response
10181039

10191040

tests/integration/test_folders.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ class TestFolders(BaseTestCase):
1313
TEST_FOLDER_PATH = "data_set/sample_project_vector"
1414
PROJECT_DESCRIPTION = "desc"
1515
PROJECT_TYPE = "Vector"
16+
SPECIAL_CHARS = "/\:*?“<>|"
1617
TEST_FOLDER_NAME_1 = "folder_1"
1718
TEST_FOLDER_NAME_2 = "folder_2"
1819
EXAMPLE_IMAGE_1_NAME = "example_image_1"
@@ -505,3 +506,17 @@ def test_folder_misnamed(self):
505506
self.assertTrue(
506507
f"{self.TEST_FOLDER_NAME_2}_" in sa.search_folders(self.PROJECT_NAME)
507508
)
509+
510+
def test_create_folder_with_special_chars(self):
511+
sa.create_folder(self.PROJECT_NAME, self.SPECIAL_CHARS)
512+
folder = sa.get_folder_metadata(self.PROJECT_NAME, "_"*len(self.SPECIAL_CHARS))
513+
self.assertIsNotNone(folder)
514+
515+
def test_rename_folder_to_existing_name(self):
516+
sa.create_folder(self.PROJECT_NAME, self.TEST_FOLDER_NAME_1)
517+
sa.create_folder(self.PROJECT_NAME, "_"*len(self.SPECIAL_CHARS))
518+
sa.rename_folder(f"{self.PROJECT_NAME}/{self.TEST_FOLDER_NAME_1}", self.SPECIAL_CHARS)
519+
folder = sa.get_folder_metadata(self.PROJECT_NAME, "_" * len(self.SPECIAL_CHARS) + " (1)")
520+
self.assertIsNotNone(folder)
521+
522+

0 commit comments

Comments
 (0)