Skip to content

Commit 6a9fdc1

Browse files
authored
Merge pull request #204 from superannotateai/firday_284
Firday 284
2 parents 1e4f196 + 6f4c418 commit 6a9fdc1

File tree

5 files changed

+59
-24
lines changed

5 files changed

+59
-24
lines changed

pytest.ini

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@
22
minversion = 3.0
33
log_cli=true
44
python_files = test_*.py
5-
addopts = -n 32 --dist=loadscope
5+
;addopts = -n 32 --dist=loadscope

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/app/mixp/decorators.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,6 @@ def track(self, *args, **kwargs):
5454

5555
def __call__(self, *args, **kwargs):
5656
try:
57-
5857
self.__class__.TEAM_DATA = controller.get_team()
5958
ret = self.function(*args, **kwargs)
6059
self._success = True

src/superannotate/lib/core/usecases.py

Lines changed: 40 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -280,7 +280,7 @@ def validate_project_name(self):
280280
if self._projects.get_all(condition):
281281
logger.error("There are duplicated names.")
282282
raise AppValidationException(
283-
f"Project name {self._project.name} is not unique. "
283+
f"Project name {self._project_data['name']} is not unique. "
284284
f"To use SDK please make project names unique."
285285
)
286286

@@ -627,26 +627,25 @@ def __init__(
627627
def validate_folder(self):
628628
if not self._folder.name:
629629
raise AppValidationException("Folder name cannot be empty.")
630-
631-
def execute(self):
632-
if self.is_valid():
633-
if (
630+
if (
634631
len(
635632
set(self._folder.name).intersection(
636633
constances.SPECIAL_CHARACTERS_IN_PROJECT_FOLDER_NAMES
637634
)
638635
)
639636
> 0
640-
):
641-
self._folder.name = "".join(
642-
"_"
643-
if char in constances.SPECIAL_CHARACTERS_IN_PROJECT_FOLDER_NAMES
644-
else char
645-
for char in self._folder.name
646-
)
647-
logger.warning(
648-
"New folder name has special characters. Special characters will be replaced by underscores."
649-
)
637+
):
638+
self._folder.name = "".join(
639+
"_"
640+
if char in constances.SPECIAL_CHARACTERS_IN_PROJECT_FOLDER_NAMES
641+
else char
642+
for char in self._folder.name
643+
)
644+
logger.warning(
645+
"New folder name has special characters. Special characters will be replaced by underscores."
646+
)
647+
def execute(self):
648+
if self.is_valid():
650649
self._folder.project_id = self._project.uuid
651650
self._response.data = self._folders.insert(self._folder)
652651
return self._response
@@ -965,11 +964,33 @@ def __init__(
965964
self._folders = folders
966965
self._folder = folder
967966

967+
def validate_folder(self):
968+
if not self._folder.name:
969+
raise AppValidationException("Folder name cannot be empty.")
970+
if (
971+
len(
972+
set(self._folder.name).intersection(
973+
constances.SPECIAL_CHARACTERS_IN_PROJECT_FOLDER_NAMES
974+
)
975+
)
976+
> 0
977+
):
978+
self._folder.name = "".join(
979+
"_"
980+
if char in constances.SPECIAL_CHARACTERS_IN_PROJECT_FOLDER_NAMES
981+
else char
982+
for char in self._folder.name
983+
)
984+
logger.warning(
985+
"New folder name has special characters. Special characters will be replaced by underscores."
986+
)
987+
968988
def execute(self):
969-
is_updated = self._folders.update(self._folder)
970-
if not is_updated:
971-
self._response.errors = AppException("Couldn't rename folder.")
972-
self._response.data = self._folder
989+
if self.is_valid():
990+
is_updated = self._folders.update(self._folder)
991+
if not is_updated:
992+
self._response.errors = AppException("Couldn't rename folder.")
993+
self._response.data = self._folder
973994
return self._response
974995

975996

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)