7171from lib .infrastructure .annotation_adapter import BaseMultimodalAnnotationAdapter
7272from lib .infrastructure .annotation_adapter import MultimodalSmallAnnotationAdapter
7373from lib .infrastructure .annotation_adapter import MultimodalLargeAnnotationAdapter
74- from lib .infrastructure .utils import extract_project_folder
7574from lib .infrastructure .validators import wrap_error
7675from lib .app .serializers import WMProjectSerializer
7776from lib .core .entities .work_managament import WMUserTypeEnum
@@ -322,7 +321,7 @@ def get_project_by_id(self, project_id: int):
322321 :return: project metadata
323322 :rtype: dict
324323 """
325- response = self .controller .get_project_by_id (project_id = project_id )
324+ response = self .controller .get_project (project_id = project_id )
326325
327326 return ProjectSerializer (response .data ).serialize ()
328327
@@ -372,7 +371,7 @@ def get_item_by_id(
372371 :return: item metadata
373372 :rtype: dict
374373 """
375- project_response = self .controller .get_project_by_id (project_id = project_id )
374+ project_response = self .controller .get_project (project_id = project_id )
376375 project_response .raise_for_status ()
377376
378377 if (
@@ -714,10 +713,7 @@ def list_users(
714713
715714 """
716715 if project is not None :
717- if isinstance (project , int ):
718- project = self .controller .get_project_by_id (project ).data
719- else :
720- project = self .controller .get_project (project )
716+ project = self .controller .get_project (project )
721717 response = BaseSerializer .serialize_iterable (
722718 self .controller .work_management .list_users (
723719 project = project , include = include , ** filters
@@ -958,11 +954,7 @@ def set_contributors_categories(
958954 if not categories :
959955 AppException ("Categories should be a list of strings or '*'." )
960956
961- project = (
962- self .controller .get_project_by_id (project ).data
963- if isinstance (project , int )
964- else self .controller .get_project (project )
965- )
957+ project = self .controller .get_project (project )
966958 self .controller .check_multimodal_project_categorization (project )
967959
968960 self .controller .work_management .set_remove_contributor_categories (
@@ -1008,11 +1000,7 @@ def remove_contributors_categories(
10081000 if not categories :
10091001 AppException ("Categories should be a list of strings or '*'." )
10101002
1011- project = (
1012- self .controller .get_project_by_id (project ).data
1013- if isinstance (project , int )
1014- else self .controller .get_project (project )
1015- )
1003+ project = self .controller .get_project (project )
10161004 self .controller .check_multimodal_project_categorization (project )
10171005
10181006 self .controller .work_management .set_remove_contributor_categories (
@@ -1064,11 +1052,7 @@ def retrieve_context(
10641052 raise e
10651053 return False , None
10661054
1067- project = (
1068- self .controller .get_project_by_id (project ).data
1069- if isinstance (project , int )
1070- else self .controller .get_project (project )
1071- )
1055+ project = self .controller .get_project (project )
10721056 if project .type != ProjectType .MULTIMODAL :
10731057 raise AppException (
10741058 "This function is only supported for Multimodal projects."
@@ -1429,11 +1413,7 @@ def create_categories(
14291413 if not categories :
14301414 raise AppException ("Categories should be a list of strings." )
14311415
1432- project = (
1433- self .controller .get_project_by_id (project ).data
1434- if isinstance (project , int )
1435- else self .controller .get_project (project )
1436- )
1416+ project = self .controller .get_project (project )
14371417 self .controller .check_multimodal_project_categorization (project )
14381418
14391419 response = (
@@ -1483,11 +1463,7 @@ def list_categories(self, project: NotEmptyStr | int):
14831463 ]
14841464
14851465 """
1486- project = (
1487- self .controller .get_project_by_id (project ).data
1488- if isinstance (project , int )
1489- else self .controller .get_project (project )
1490- )
1466+ project = self .controller .get_project (project )
14911467 self .controller .check_multimodal_project_categorization (project )
14921468
14931469 response = (
@@ -1529,11 +1505,7 @@ def remove_categories(
15291505 if not categories :
15301506 AppException ("Categories should be a list of strings or '*'." )
15311507
1532- project = (
1533- self .controller .get_project_by_id (project ).data
1534- if isinstance (project , int )
1535- else self .controller .get_project (project )
1536- )
1508+ project = self .controller .get_project (project )
15371509 self .controller .check_multimodal_project_categorization (project )
15381510
15391511 query = EmptyQuery ()
@@ -1589,16 +1561,14 @@ def create_folder(self, project: NotEmptyStr | int, folder_name: NotEmptyStr):
15891561 if res .errors :
15901562 raise AppException (res .errors )
15911563
1592- def delete_project (self , project : NotEmptyStr | dict ):
1564+ def delete_project (self , project : NotEmptyStr | int ):
15931565 """Deletes the project
15941566
1595- :param project: project name
1567+ :param project: project name or ID
15961568 :type project: str
15971569 """
1598- name = project
1599- if isinstance (project , dict ):
1600- name = project ["name" ]
1601- self .controller .projects .delete (name = name )
1570+ project = self .controller .get_project (project )
1571+ self .controller .projects .delete (name = project .name )
16021572
16031573 def rename_project (self , project : NotEmptyStr | int , new_name : NotEmptyStr ):
16041574 """Renames the project
@@ -1868,11 +1838,7 @@ def list_folders(
18681838 }
18691839 ]
18701840 """
1871- project_entity = (
1872- self .controller .get_project_by_id (project ).data
1873- if isinstance (project , int )
1874- else self .controller .get_project (project )
1875- )
1841+ project_entity = self .controller .get_project (project )
18761842
18771843 valid_fields = FolderFilters .__annotations__
18781844 chain = QueryBuilderChain (
@@ -2410,11 +2376,7 @@ def set_project_custom_field(
24102376 value=1738671238.759,
24112377 )
24122378 """
2413- project = (
2414- self .controller .get_project_by_id (project ).data
2415- if isinstance (project , int )
2416- else self .controller .get_project (project )
2417- )
2379+ project = self .controller .get_project (project )
24182380 self .controller .work_management .set_custom_field_value (
24192381 entity_id = project .id ,
24202382 field_name = custom_field_name ,
@@ -2868,9 +2830,9 @@ def prepare_export(
28682830
28692831 client.download_export("Project Name", export, "path_to_download")
28702832 """
2871- project , folder = self .controller .get_project_folder (project )
2833+ project = self .controller .get_project (project )
28722834 if folder_names is None :
2873- folders = [folder . name ] if folder else [ ]
2835+ folders = []
28742836 else :
28752837 folders = folder_names
28762838 integration_name = kwargs .get ("integration_name" )
@@ -2933,11 +2895,7 @@ def delete_exports(
29332895 exports="*"
29342896 )
29352897 """
2936- project_entity = (
2937- self .controller .get_project_by_id (project ).data
2938- if isinstance (project , int )
2939- else self .controller .get_project (project )
2940- )
2898+ project_entity = self .controller .get_project (project )
29412899 response = self .controller .delete_exports (
29422900 project = project_entity , exports = exports
29432901 )
@@ -3268,7 +3226,7 @@ def delete_annotation_class(
32683226 raise AppException (wrap_error (e ))
32693227 else :
32703228 annotation_class = AnnotationClassEntity (** annotation_class )
3271- project = self .controller .projects . get_by_name (project ). data
3229+ project = self .controller .get_project (project )
32723230
32733231 self .controller .annotation_classes .delete (
32743232 project = project , annotation_class = annotation_class
@@ -3641,15 +3599,17 @@ def upload_annotations_from_folder_to_project(
36413599 :rtype: tuple of list of strs
36423600 """
36433601
3644- project_name , folder_name = extract_project_folder (project )
3602+ project , folder = self . controller . get_project_folder (project )
36453603 if keep_status is not None :
36463604 warnings .warn (
36473605 DeprecationWarning (
36483606 "The “keep_status” parameter is deprecated. "
36493607 "Please use the “set_annotation_statuses” function instead."
36503608 )
36513609 )
3652- project_folder_name = project_name + (f"/{ folder_name } " if folder_name else "" )
3610+ project_folder_name = project .name + (
3611+ f"/{ folder .name } " if not folder .is_root else ""
3612+ )
36533613
36543614 if recursive_subfolders :
36553615 logger .info (
@@ -3668,7 +3628,6 @@ def upload_annotations_from_folder_to_project(
36683628 logger .info (
36693629 f"Uploading { len (annotation_paths )} annotations from { folder_path } to the project { project_folder_name } ."
36703630 )
3671- project , folder = self .controller .get_project_folder (project )
36723631 response = self .controller .annotations .upload_from_folder (
36733632 project = project ,
36743633 folder = folder ,
@@ -3715,7 +3674,6 @@ def upload_image_annotations(
37153674
37163675 """
37173676
3718- _ , folder_name = extract_project_folder (project )
37193677 if keep_status is not None :
37203678 warnings .warn (
37213679 DeprecationWarning (
@@ -3732,9 +3690,6 @@ def upload_image_annotations(
37323690 logger .info ("Uploading annotations from %s." , annotation_json )
37333691 with open (annotation_json , "rb" ) as f :
37343692 annotation_json = json .load (f )
3735- folder = self .controller .get_folder (project , folder_name )
3736- if not folder :
3737- raise AppException ("Folder not found." )
37383693
37393694 items = self .controller .items .list_items (project , folder , name = image_name )
37403695 image = next (iter (items ), None )
@@ -4161,7 +4116,9 @@ def upload_priority_scores(
41614116 """
41624117 scores = TypeAdapter (list [PriorityScoreEntity ]).validate_python (scores )
41634118 project , folder = self .controller .get_project_folder (project )
4164- project_folder_name = project .name + "" if folder .is_root else f"/{ folder .name } "
4119+ project_folder_name = project .name + (
4120+ "" if folder .is_root else f"/{ folder .name } "
4121+ )
41654122 response = self .controller .projects .upload_priority_scores (
41664123 project , folder , scores , project_folder_name
41674124 )
@@ -4693,11 +4650,7 @@ def list_items(
46934650 assignee__user_id="qa@example.com"
46944651 )
46954652 """
4696- project = (
4697- self .controller .get_project_by_id (project ).data
4698- if isinstance (project , int )
4699- else self .controller .get_project (project )
4700- )
4653+ project = self .controller .get_project (project )
47014654 if (
47024655 include
47034656 and "categories" in include
@@ -5294,10 +5247,7 @@ def download_annotations(
52945247
52955248
52965249 """
5297- project_name , folder_name = extract_project_folder (project )
5298- project , folder = self .controller .get_project_folder (
5299- (project_name , folder_name )
5300- )
5250+ project , folder = self .controller .get_project_folder (project )
53015251 response = self .controller .annotations .download (
53025252 project = project ,
53035253 folder = folder ,
@@ -5823,7 +5773,7 @@ def item_context(
58235773 project = self .controller .get_project (path [0 ])
58245774 folder = self .controller .get_folder (project , path [1 ])
58255775 elif len (path ) == 2 and all ([isinstance (i , int ) for i in path ]):
5826- project = self .controller .get_project_by_id (path [0 ]).data
5776+ project = self .controller .get_project (path [0 ]).data
58275777 folder = self .controller .get_folder_by_id (path [1 ], project .id ).data
58285778 else :
58295779 raise AppException ("Invalid path provided." )
0 commit comments