2323 AssetId ,
2424 AssetStatus ,
2525 StatusInStep ,
26+ get_asset_default_fields ,
2627)
28+ from kili .domain .asset .helpers import check_asset_workflow_arguments
2729from kili .domain .issue import IssueStatus , IssueType
2830from kili .domain .label import LabelType
2931from kili .domain .project import ProjectId
3234 disable_tqdm_if_as_generator ,
3335)
3436from kili .presentation .client .helpers .filter_conversion import (
35- convert_step_in_to_step_id_in_filter ,
37+ extract_step_ids_from_project_steps ,
3638)
3739from kili .use_cases .asset import AssetUseCases
3840from kili .use_cases .project .project import ProjectUseCases
@@ -55,21 +57,7 @@ def assets(
5557 project_id : str ,
5658 asset_id : Optional [str ] = None ,
5759 skip : int = 0 ,
58- fields : ListOrTuple [str ] = (
59- "content" ,
60- "createdAt" ,
61- "externalId" ,
62- "id" ,
63- "isHoneypot" ,
64- "jsonMetadata" ,
65- "labels.author.id" ,
66- "labels.author.email" ,
67- "labels.createdAt" ,
68- "labels.id" ,
69- "labels.jsonResponse" ,
70- "skipped" ,
71- "status" ,
72- ),
60+ fields : Optional [ListOrTuple [str ]] = None ,
7361 asset_id_in : Optional [List [str ]] = None ,
7462 asset_id_not_in : Optional [List [str ]] = None ,
7563 consensus_mark_gt : Optional [float ] = None ,
@@ -135,21 +123,7 @@ def assets(
135123 project_id : str ,
136124 asset_id : Optional [str ] = None ,
137125 skip : int = 0 ,
138- fields : ListOrTuple [str ] = (
139- "content" ,
140- "createdAt" ,
141- "externalId" ,
142- "id" ,
143- "isHoneypot" ,
144- "jsonMetadata" ,
145- "labels.author.id" ,
146- "labels.author.email" ,
147- "labels.createdAt" ,
148- "labels.id" ,
149- "labels.jsonResponse" ,
150- "skipped" ,
151- "status" ,
152- ),
126+ fields : Optional [ListOrTuple [str ]] = None ,
153127 asset_id_in : Optional [List [str ]] = None ,
154128 asset_id_not_in : Optional [List [str ]] = None ,
155129 consensus_mark_gt : Optional [float ] = None ,
@@ -215,21 +189,7 @@ def assets(
215189 project_id : str ,
216190 asset_id : Optional [str ] = None ,
217191 skip : int = 0 ,
218- fields : ListOrTuple [str ] = (
219- "content" ,
220- "createdAt" ,
221- "externalId" ,
222- "id" ,
223- "isHoneypot" ,
224- "jsonMetadata" ,
225- "labels.author.id" ,
226- "labels.author.email" ,
227- "labels.createdAt" ,
228- "labels.id" ,
229- "labels.jsonResponse" ,
230- "skipped" ,
231- "status" ,
232- ),
192+ fields : Optional [ListOrTuple [str ]] = None ,
233193 asset_id_in : Optional [List [str ]] = None ,
234194 asset_id_not_in : Optional [List [str ]] = None ,
235195 consensus_mark_gt : Optional [float ] = None ,
@@ -453,31 +413,44 @@ def assets(
453413
454414 disable_tqdm = disable_tqdm_if_as_generator (as_generator , disable_tqdm )
455415
416+ project_use_cases = ProjectUseCases (self .kili_api_gateway )
417+ project_steps , project_workflow_version = project_use_cases .get_project_steps_and_version (
418+ project_id
419+ )
420+ if fields is None :
421+ fields = get_asset_default_fields (project_workflow_version = project_workflow_version )
422+ elif project_workflow_version == "V1" :
423+ for invalid_field in filter (lambda f : f .startswith ("currentStep." ), fields ):
424+ warnings .warn (
425+ f"Field { invalid_field } requested : request 'status' field instead for this project" ,
426+ stacklevel = 1 ,
427+ )
428+ elif "status" in fields :
429+ warnings .warn (
430+ "Field status requested : request 'currentStep.name' and 'currentStep.status' fields instead for this project" ,
431+ stacklevel = 1 ,
432+ )
433+
456434 step_id_in = None
457435 if (
458436 step_name_in is not None
459437 or step_status_in is not None
460438 or status_in is not None
461439 or skipped is not None
462440 ):
463- project_use_cases = ProjectUseCases (self .kili_api_gateway )
464- project_steps = project_use_cases .get_project_steps (project_id )
465-
466- if step_name_in is not None or step_status_in is not None or status_in is not None :
467- step_id_in = convert_step_in_to_step_id_in_filter (
441+ check_asset_workflow_arguments (
442+ project_workflow_version = project_workflow_version ,
443+ asset_workflow_filters = {
444+ "skipped" : skipped ,
445+ "status_in" : status_in ,
446+ "step_name_in" : step_name_in ,
447+ "step_status_in" : step_status_in ,
448+ },
449+ )
450+ if project_workflow_version == "V2" and step_name_in is not None :
451+ step_id_in = extract_step_ids_from_project_steps (
468452 project_steps = project_steps ,
469- fields = fields ,
470- asset_filter_kwargs = {
471- "step_name_in" : step_name_in ,
472- "step_status_in" : step_status_in ,
473- "status_in" : status_in ,
474- "skipped" : skipped ,
475- },
476- )
477- elif skipped is not None and len (project_steps ) != 0 :
478- warnings .warn (
479- "Filter skipped given : only use filter step_status_in with the SKIPPED step status instead for this project" ,
480- stacklevel = 1 ,
453+ step_name_in = step_name_in ,
481454 )
482455
483456 asset_use_cases = AssetUseCases (self .kili_api_gateway )
@@ -722,18 +695,28 @@ def count_assets(
722695 )
723696
724697 step_id_in = None
725-
726698 if status_in is not None or step_name_in is not None or step_status_in is not None :
727699 project_use_cases = ProjectUseCases (self .kili_api_gateway )
728- step_id_in = convert_step_in_to_step_id_in_filter (
729- project_steps = project_use_cases .get_project_steps (project_id ),
730- asset_filter_kwargs = {
700+ (
701+ project_steps ,
702+ project_workflow_version ,
703+ ) = project_use_cases .get_project_steps_and_version (project_id )
704+ check_asset_workflow_arguments (
705+ project_workflow_version = project_workflow_version ,
706+ asset_workflow_filters = {
707+ "skipped" : skipped ,
731708 "step_name_in" : step_name_in ,
732709 "step_status_in" : step_status_in ,
733710 "status_in" : status_in ,
734711 },
735712 )
736713
714+ if project_workflow_version == "V2" and step_name_in is not None :
715+ step_id_in = extract_step_ids_from_project_steps (
716+ project_steps = project_steps ,
717+ step_name_in = step_name_in ,
718+ )
719+
737720 filters = AssetFilters (
738721 project_id = ProjectId (project_id ),
739722 asset_id = AssetId (asset_id ) if asset_id else None ,
0 commit comments