From 7bbc4212203f68abc5521e471d33d4fe9a69fb46 Mon Sep 17 00:00:00 2001 From: Ryan Harden Date: Wed, 31 May 2023 21:34:46 -0500 Subject: [PATCH 1/2] Add workspace info to board query output --- monday/query_joins.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/monday/query_joins.py b/monday/query_joins.py index d075643..de6057f 100644 --- a/monday/query_joins.py +++ b/monday/query_joins.py @@ -350,6 +350,10 @@ def get_boards_query(limit: int = None, page: int = None, ids: List[int] = None, title type } + workspace{ + name + id + } } }''' % ', '.join(query_params) @@ -377,6 +381,10 @@ def get_boards_by_id_query(board_ids): type settings_str } + workspace{ + name + id + } } }''' % board_ids From dedfe4afd43842dbf7daa1d8cd649b6595f7d3bf Mon Sep 17 00:00:00 2001 From: Ryan Harden Date: Wed, 31 May 2023 22:11:52 -0500 Subject: [PATCH 2/2] Add fetch_boards_by_workspace_id() function --- monday/resources/boards.py | 43 ++++++++++++++++++++++++++++++++++---- 1 file changed, 39 insertions(+), 4 deletions(-) diff --git a/monday/resources/boards.py b/monday/resources/boards.py index ce506a6..32e84fe 100644 --- a/monday/resources/boards.py +++ b/monday/resources/boards.py @@ -1,4 +1,5 @@ -from typing import List, Optional +import copy +from typing import List, Optional, Required from monday.resources.base import BaseResource from monday.query_joins import ( get_boards_query, @@ -14,7 +15,15 @@ class BoardResource(BaseResource): def __init__(self, token): super().__init__(token) - def fetch_boards(self, limit: int = None, page: int = None, ids: List[int] = None, board_kind: BoardKind = None, state: BoardState = None, order_by: BoardsOrderBy = None): + def fetch_boards( + self, + limit: int = None, + page: int = None, + ids: List[int] = None, + board_kind: BoardKind = None, + state: BoardState = None, + order_by: BoardsOrderBy = None, + ): query = get_boards_query(limit, page, ids, board_kind, state, order_by) return self.client.execute(query) @@ -22,7 +31,31 @@ def fetch_boards_by_id(self, board_ids): query = get_boards_by_id_query(board_ids) return self.client.execute(query) - def fetch_items_by_board_id(self, board_ids, limit: Optional[int]=None, page: Optional[int]=None): + def fetch_boards_by_workspace_id( + self, + limit: int = 1000, + workspace_id: Required[int] = None, + page: int = None, + ids: List[int] = None, + board_kind: BoardKind = None, + state: BoardState = None, + order_by: BoardsOrderBy = None, + ): + query = get_boards_query(limit, page, ids, board_kind, state, order_by) + response = self.client.execute(query) + filtered_boards = copy.deepcopy(response) + filtered_boards["data"]["boards"].clear() + for board in response["data"]["boards"]: + try: + if board["workspace"]["id"] == workspace_id: + filtered_boards["data"]["boards"].append(board) + except TypeError: + continue + return filtered_boards + + def fetch_items_by_board_id( + self, board_ids, limit: Optional[int] = None, page: Optional[int] = None + ): query = get_board_items_query(board_ids, limit=limit, page=page) return self.client.execute(query) @@ -30,6 +63,8 @@ def fetch_columns_by_board_id(self, board_ids): query = get_columns_by_board_query(board_ids) return self.client.execute(query) - def create_board(self, board_name: str, board_kind: BoardKind, workspace_id: int = None): + def create_board( + self, board_name: str, board_kind: BoardKind, workspace_id: int = None + ): query = create_board_by_workspace_query(board_name, board_kind, workspace_id) return self.client.execute(query)