From 618bb9e083c1b5f28a8844a5955f4354d42901aa Mon Sep 17 00:00:00 2001 From: Jon Michael Aanes Date: Tue, 1 Oct 2024 16:40:44 +0200 Subject: [PATCH] More types --- favro_sync/favro_client.py | 2 +- favro_sync/favro_data_model.py | 49 +++++++++++++++++++++++++++++----- 2 files changed, 44 insertions(+), 7 deletions(-) diff --git a/favro_sync/favro_client.py b/favro_sync/favro_client.py index 0d80433..4ac2154 100644 --- a/favro_sync/favro_client.py +++ b/favro_sync/favro_client.py @@ -32,7 +32,7 @@ URL_UPDATE_CARD = URL_API_ROOT + '/cards/{card_id}' URL_GET_USER = URL_API_ROOT + '/users/{user_id}' URL_GET_TAG = URL_API_ROOT + '/tags/{tag_id}' URL_GET_CUSTOM_FIELD = URL_API_ROOT + '/customfields/{custom_field_id}' - +URL_GET_TASKS = URL_API_ROOT + '/tasks' class CardCache: def __init__(self): diff --git a/favro_sync/favro_data_model.py b/favro_sync/favro_data_model.py index 3c81c6f..4e18e8e 100644 --- a/favro_sync/favro_data_model.py +++ b/favro_sync/favro_data_model.py @@ -20,7 +20,7 @@ class CardId: @dataclasses.dataclass(frozen=True) -class CommonId: +class CardCommonId: raw_id: str @@ -48,6 +48,14 @@ class WidgetCommonId: class CustomFieldItemId: raw_id: str +@dataclasses.dataclass(frozen=True) +class TaskId: + raw_id: str + +@dataclasses.dataclass(frozen=True) +class TaskListId: + raw_id: str + @dataclasses.dataclass(frozen=True) class CardAssignment: @@ -137,7 +145,15 @@ class CustomFieldInfo: @staticmethod def from_json(json: dict[str, Any]) -> 'CustomFieldInfo': - pass # TODO + return CustomFieldInfo( + organization_id= OrganizationId(json['organizationId']), + custom_field_id= CustomFieldId(json['customFieldId']), + widget_common_id= WidgetCommonId(json['widgetCommonId']), + type= json['type'], + name= json['name'], + enabled= json['enabled'], + custom_field_items= json['customFieldItems'], + ) @dataclasses.dataclass(frozen=True) @@ -156,7 +172,7 @@ class CustomField: @dataclasses.dataclass(frozen=True) class CardDependency: card_id: CardId - card_common_id: CommonId + card_common_id: CardCommonId is_before: bool reverse_card_id: CardId @@ -164,17 +180,38 @@ class CardDependency: def from_json(json: dict[str, Any]) -> 'CardDependency': return CardDependency( CardId(json['cardId']), - CommonId(json['cardCommonId']), + CardCommonId(json['cardCommonId']), json['isBefore'], CardId(json['reverseCardId']), ) +@dataclasses.dataclass(frozen=True) +class Task: + task_id: TaskId + task_list_id: TaskListId + organization_id: OrganizationId + card_common_id: CardCommonId + name: str + completed: bool + position: int + + @staticmethod + def from_json(json: dict[str, Any]) -> 'Task': + return Task( + task_id = json['taskId'], + task_list_id = json['taskListId'], + organization_id = json['organizationId'], + card_common_id = json['cardCommonId'], + name = json['name'], + completed = json['completed'], + position = json['position'], + ) @dataclasses.dataclass(frozen=True) class Card: card_id: CardId seq_id: SeqId - common_id: CommonId + common_id: CardCommonId organization_id: OrganizationId is_archived: bool name: str @@ -197,7 +234,7 @@ class Card: return Card( card_id=CardId(json['cardId']), seq_id=SeqId(json['sequentialId']), - common_id=CommonId(json['cardCommonId']), + common_id=CardCommonId(json['cardCommonId']), detailed_description=json.get('detailedDescription'), is_archived=json['archived'], organization_id=OrganizationId(json['organizationId']),