From 9a023c28d5f4fad4c081cb5e274104d7e3132113 Mon Sep 17 00:00:00 2001 From: Alex Kulikov Date: Sat, 15 Jun 2024 18:09:29 +0100 Subject: [PATCH] feat: write created illustration folder link to trello card --- src/focalboard/focalboard_client.py | 21 +++++++++---------- .../create_folders_for_illustrators_job.py | 2 +- src/trello/trello_objects.py | 3 +++ 3 files changed, 14 insertions(+), 12 deletions(-) diff --git a/src/focalboard/focalboard_client.py b/src/focalboard/focalboard_client.py index 190e5ec..2606fe8 100644 --- a/src/focalboard/focalboard_client.py +++ b/src/focalboard/focalboard_client.py @@ -260,18 +260,17 @@ def get_custom_fields(self, card_id: str) -> objects.CardCustomFields: card_fields._data = card_labels return card_fields - def set_card_custom_field(self, card_id, field_alias, value): + def set_card_custom_field(self, card: objects.TrelloCard, field_alias, value): board_id = self.board_id field_id = self.custom_fields_config[field_alias] data = { "updatedFields": { - "properties": { - field_id: value - } + "properties": card._fields_properties } } + data["updatedFields"]["properties"][field_id] = value code = self._make_patch_request( - f"api/v2/boards/{board_id}/blocks/{card_id}", payload=data + f"api/v2/boards/{board_id}/blocks/{card.id}", payload=data ) logger.debug(f"set_card_custom_field: {code}") @@ -317,12 +316,12 @@ def get_cards(self, list_ids=None, board_id=None): card = objects.TrelloCard.from_focalboard_dict(card_dict) card.url = urljoin(self.url, f"{board_id}/{view_id}/{card.id}") card.labels = [] - for label_id in card_dict["fields"]["properties"].get(label_prop, []): + for label_id in card._fields_properties.get(label_prop, []): for label in labels: if label.id == label_id: card.labels.append(label) try: - due = card_dict["fields"]["properties"].get(due_prop, '{}') + due = card._fields_properties.get(due_prop, '{}') due_ts = json.loads(due).get('to') if due_ts: card.due = datetime.fromtimestamp(due_ts // 1000) @@ -331,7 +330,7 @@ def get_cards(self, list_ids=None, board_id=None): print(e) # TODO: move this to app state for trello_list in lists: - if trello_list.id == card_dict["fields"]["properties"].get( + if trello_list.id == card._fields_properties.get( list_prop, "" ): card.lst = trello_list @@ -339,9 +338,9 @@ def get_cards(self, list_ids=None, board_id=None): else: logger.error(f"List name not found for {card}") # TODO: move this to app state - if len(card_dict["fields"]["properties"].get(member_prop, [])) > 0: + if len(card._fields_properties.get(member_prop, [])) > 0: for member in members: - if member.id in card_dict["fields"]["properties"].get( + if member.id in card._fields_properties.get( member_prop, [] ): card.members.append(member) @@ -393,7 +392,7 @@ def _make_request(self, uri, payload={}): def _make_patch_request(self, uri, payload={}): response = requests.patch( - urljoin(self.url, uri), params=payload, headers=self.headers + urljoin(self.url, uri), json=payload, headers=self.headers ) logger.debug(f"{response.url}") return response.status_code, response.json() diff --git a/src/jobs/create_folders_for_illustrators_job.py b/src/jobs/create_folders_for_illustrators_job.py index 36e5dfd..0b28c34 100644 --- a/src/jobs/create_folders_for_illustrators_job.py +++ b/src/jobs/create_folders_for_illustrators_job.py @@ -122,7 +122,7 @@ def _create_folders( ) if app_context.trello_client.deprecated: app_context.focalboard_client.set_card_custom_field( - card.id, + card, TrelloCustomFieldTypeAlias.COVER, card_fields.cover, ) diff --git a/src/trello/trello_objects.py b/src/trello/trello_objects.py index dd39992..158548c 100644 --- a/src/trello/trello_objects.py +++ b/src/trello/trello_objects.py @@ -223,6 +223,8 @@ def __init__(self): # TODO: move this to app state self.lst = None self.members = [] + # focalboard fields + self._fields_properties = None self._ok = True @@ -263,6 +265,7 @@ def from_focalboard_dict(cls, data): try: card.id = data["id"] card.name = html.escape(data["title"]) + card._fields_properties = data["fields"]["properties"] except Exception as e: card._ok = False logger.error(f"Bad card json {data}: {e}")