From 741fa84b5219d5d01d1c152cc971ac05f548d168 Mon Sep 17 00:00:00 2001 From: allegroai <> Date: Thu, 25 May 2023 19:32:52 +0300 Subject: [PATCH] Fix projects own_tasks does not take task state filter into account --- apiserver/bll/project/project_bll.py | 15 +++++++++++++++ apiserver/services/projects.py | 1 + apiserver/tests/automated/test_subprojects.py | 2 +- 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/apiserver/bll/project/project_bll.py b/apiserver/bll/project/project_bll.py index ea032c3..c4b26e2 100644 --- a/apiserver/bll/project/project_bll.py +++ b/apiserver/bll/project/project_bll.py @@ -1146,6 +1146,7 @@ class ProjectBLL: company: str, project_ids: Sequence[str], filter_: Mapping[str, Any] = None, + specific_state: Optional[EntityVisibility] = None, users: Sequence[str] = None, ) -> Dict[str, dict]: """ @@ -1156,6 +1157,20 @@ class ProjectBLL: if not project_ids: return {} + if specific_state: + filter_ = filter_ or {} + system_tags_filter = filter_.get("system_tags", []) + archived = EntityVisibility.archived.value + non_archived = f"-{EntityVisibility.archived.value}" + if not any(t in system_tags_filter for t in (archived, non_archived)): + filter_ = {k: v for k, v in filter_.items()} + filter_["system_tags"] = [ + archived + if specific_state == EntityVisibility.archived + else non_archived, + *system_tags_filter, + ] + pipeline = [ { "$match": cls.get_match_conditions( diff --git a/apiserver/services/projects.py b/apiserver/services/projects.py index 97453c0..9059384 100644 --- a/apiserver/services/projects.py +++ b/apiserver/services/projects.py @@ -201,6 +201,7 @@ def get_all_ex(call: APICall, company_id: str, request: ProjectsGetRequest): company=company_id, project_ids=project_ids, filter_=stats_filter, + specific_state=request.stats_for_state, users=request.active_users, ) diff --git a/apiserver/tests/automated/test_subprojects.py b/apiserver/tests/automated/test_subprojects.py index 2b41fb2..d94cfb1 100644 --- a/apiserver/tests/automated/test_subprojects.py +++ b/apiserver/tests/automated/test_subprojects.py @@ -348,7 +348,7 @@ class TestSubProjects(TestService): id=[project1, project2], check_own_contents=True ).projects res1 = next(p for p in res if p.id == project1) - self.assertEqual(res1.own_tasks, 2) + self.assertEqual(res1.own_tasks, 1) self.assertEqual(res1.own_models, 1) res2 = next(p for p in res if p.id == project2)