File size: 2,610 Bytes
7360460 a65e06d 7360460 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
from typing import List
from pmcp.mcp_server.trello_server.models import TrelloList
from pmcp.mcp_server.trello_server.utils.trello_api import TrelloClient
class ListService:
"""
Service class for managing Trello lists.
"""
def __init__(self, client: TrelloClient):
self.client = client
# Lists
async def get_list(self, list_id: str) -> TrelloList:
"""Retrieves a specific list by its ID.
Args:
list_id (str): The ID of the list to retrieve.
Returns:
TrelloList: The list object containing list details.
"""
response = await self.client.GET(f"/lists/{list_id}")
return TrelloList(**response)
async def get_lists(self, board_id: str) -> List[TrelloList]:
"""Retrieves all lists on a given board.
Args:
board_id (str): The ID of the board whose lists to retrieve.
Returns:
List[TrelloList]: A list of list objects.
"""
response = await self.client.GET(f"/boards/{board_id}/lists")
return [TrelloList(**list_data) for list_data in response]
async def create_list(
self, board_id: str, name: str, pos: str = "bottom"
) -> TrelloList:
"""Creates a new list on a given board.
Args:
board_id (str): The ID of the board to create the list in.
name (str): The name of the new list.
pos (str, optional): The position of the new list. Can be "top" or "bottom". Defaults to "bottom".
Returns:
TrelloList: The newly created list object.
"""
data = {"name": name, "idBoard": board_id, "pos": pos}
response = await self.client.POST("/lists", data=data)
return TrelloList(**response)
async def update_list(self, list_id: str, name: str) -> TrelloList:
"""Updates the name of a list.
Args:
list_id (str): The ID of the list to update.
name (str): The new name for the list.
Returns:
TrelloList: The updated list object.
"""
response = await self.client.PUT(f"/lists/{list_id}", data={"name": name})
return TrelloList(**response)
async def delete_list(self, list_id: str) -> TrelloList:
"""Archives a list.
Args:
list_id (str): The ID of the list to close.
Returns:
TrelloList: The archived list object.
"""
response = await self.client.PUT(
f"/lists/{list_id}/closed", data={"value": "true"}
)
return TrelloList(**response)
|