From 73540fbb62e0beeb5f79b0c407ac2c06583f4ceb Mon Sep 17 00:00:00 2001 From: allegroai <> Date: Sun, 6 Dec 2020 11:24:06 +0200 Subject: [PATCH] Add Task.get_project_id() using project name --- trains/backend_interface/task/task.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/trains/backend_interface/task/task.py b/trains/backend_interface/task/task.py index 96888282..96ad742c 100644 --- a/trains/backend_interface/task/task.py +++ b/trains/backend_interface/task/task.py @@ -1404,6 +1404,26 @@ class Task(IdObjectBase, AccessMixin, SetupUploadMixin): return [projects.Project(**p.to_dict()) for p in res.response.projects] return [] + @classmethod + def get_project_id(cls, project_name): + # type: (str) -> Optional[str] + """ + Return a the project unique id (str). + If for than one project match the project_name, return the last updated project + If no project matched the requested name, returns None + + :return: Project unique ID (str), or None if no project was found. + """ + assert project_name + assert isinstance(project_name, str) + res = cls._send( + cls._get_default_session(), + projects.GetAllRequest(order_by=['last_update'], name=exact_match_regex(project_name)), + raise_on_errors=False) + if res and res.response and res.response.projects: + return [projects.Project(**p.to_dict()).id for p in res.response.projects][0] + return None + @staticmethod def running_locally(): # type: () -> bool