Skip to content

Commit fe23e8d

Browse files
Vaghinak BasentsyanVaghinak Basentsyan
authored andcommitted
Fixed serach_folder function
1 parent c8562af commit fe23e8d

File tree

6 files changed

+36
-43
lines changed

6 files changed

+36
-43
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
# Byte-compiled / optimized / DLL files
22
__pycache__/
3+
*.pyc
34
*.py[cod]
45
*$py.class
56
*mypy*

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ def upload_image(image_path: str):
130130

131131
paths = []
132132

133-
if isinstance(extensions,str):
133+
if isinstance(extensions, str):
134134
extensions = extensions.strip().split(",")
135135

136136
for extension in extensions:
@@ -264,7 +264,7 @@ def _upload_annotations(
264264

265265
annotations_path = folder
266266
with tempfile.TemporaryDirectory() as temp_dir:
267-
if format != 'SuperAnnotate':
267+
if format != "SuperAnnotate":
268268
import_annotation(
269269
input_dir=folder,
270270
output_dir=temp_dir,

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

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -462,12 +462,12 @@ def search_folders(
462462
:rtype: list of strs or dicts
463463
"""
464464

465-
if not folder_name:
466-
data = controller.get_project_folders(project).data
467-
else:
468-
data = controller.search_folder(
469-
project_name=project, name=folder_name, include_users=return_metadata
470-
).data
465+
response = controller.search_folders(
466+
project_name=project, folder_name=folder_name, include_users=return_metadata
467+
)
468+
if response.errors:
469+
raise AppException(response.errors)
470+
data = response.data
471471
if return_metadata:
472472
return [BaseSerializers(folder).serialize() for folder in data]
473473
return [folder.name for folder in data]

src/superannotate/lib/core/conditions.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,20 @@ def __init__(self, key: str, value: Any, condition_type: str):
2020
self._type = condition_type
2121
self._condition_set = [] # type: List[NamedTuple]
2222

23+
@staticmethod
24+
def get_empty_condition():
25+
class EmptyCondition:
26+
def __or__(self, other):
27+
return other
28+
29+
def __and__(self, other):
30+
return other
31+
32+
def build_query(self):
33+
return ""
34+
35+
return EmptyCondition()
36+
2337
def __str__(self):
2438
return f"{self._key}{self._type}{self._value}"
2539

src/superannotate/lib/core/usecases.py

Lines changed: 5 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -847,17 +847,19 @@ def execute(self):
847847
return self._response
848848

849849

850-
class SearchFolderUseCase(BaseUseCase):
850+
class SearchFoldersUseCase(BaseUseCase):
851851
def __init__(
852852
self,
853853
project: ProjectEntity,
854854
folders: BaseReadOnlyRepository,
855855
condition: Condition,
856+
folder_name: str = None,
856857
include_users=False,
857858
):
858859
super().__init__()
859860
self._project = project
860861
self._folders = folders
862+
self._folder_name = folder_name
861863
self._condition = condition
862864
self._include_users = include_users
863865

@@ -868,22 +870,8 @@ def execute(self):
868870
& Condition("team_id", self._project.team_id, EQ)
869871
& Condition("includeUsers", self._include_users, EQ)
870872
)
871-
self._response.data = self._folders.get_all(condition)
872-
return self._response
873-
874-
875-
class GetProjectFoldersUseCase(BaseUseCase):
876-
def __init__(
877-
self, project: ProjectEntity, folders: BaseReadOnlyRepository,
878-
):
879-
super().__init__()
880-
self._project = project
881-
self._folders = folders
882-
883-
def execute(self):
884-
condition = Condition("team_id", self._project.team_id, EQ) & Condition(
885-
"project_id", self._project.uuid, EQ
886-
)
873+
if self._folder_name:
874+
condition &= Condition("name", self._folder_name, EQ)
887875
self._response.data = self._folders.get_all(condition)
888876
return self._response
889877

src/superannotate/lib/infrastructure/controller.py

Lines changed: 8 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -379,36 +379,26 @@ def get_folder(self, project_name: str, folder_name: str):
379379
)
380380
return use_case.execute()
381381

382-
def search_folder(self, project_name: str, include_users=False, **kwargs):
383-
condition = None
382+
def search_folders(
383+
self, project_name: str, folder_name: str = None, include_users=False, **kwargs
384+
):
385+
condition = Condition.get_empty_condition()
384386
if kwargs:
385-
conditions_iter = iter(kwargs)
386-
key = next(conditions_iter)
387-
condition = Condition(key, kwargs[key], EQ)
388-
for key, val in conditions_iter:
387+
for key, val in kwargs:
389388
condition = condition & Condition(key, val, EQ)
390-
391389
project = self._get_project(project_name)
392-
use_case = usecases.SearchFolderUseCase(
390+
use_case = usecases.SearchFoldersUseCase(
393391
project=project,
394392
folders=self.folders,
395393
condition=condition,
394+
folder_name=folder_name,
396395
include_users=include_users,
397396
)
398397
return use_case.execute()
399398

400-
def get_project_folders(
401-
self, project_name: str,
402-
):
403-
project = self._get_project(project_name)
404-
use_case = usecases.GetProjectFoldersUseCase(
405-
project=project, folders=self.folders,
406-
)
407-
return use_case.execute()
408-
409399
def delete_folders(self, project_name: str, folder_names: List[str]):
410400
project = self._get_project(project_name)
411-
folders = self.get_project_folders(project_name).data
401+
folders = self.search_folders(project_name=project_name).data
412402

413403
use_case = usecases.DeleteFolderUseCase(
414404
project=project,

0 commit comments

Comments
 (0)