1
0
favro-sync/favro_sync/favro_data_model.py
Jon Michael Aanes b2c32881df
Some checks failed
Test Python / Test (push) Failing after 22s
Ruff
2024-09-26 23:08:39 +02:00

82 lines
2.0 KiB
Python

import dataclasses
import datetime
from typing import Any
@dataclasses.dataclass(frozen=True)
class SeqId:
raw_id: int
@dataclasses.dataclass(frozen=True)
class CardId:
raw_id: str
@dataclasses.dataclass(frozen=True)
class CommonId:
raw_id: str
@dataclasses.dataclass(frozen=True)
class UserId:
raw_id: str
@dataclasses.dataclass(frozen=True)
class OrganizationId:
raw_id: str
@dataclasses.dataclass(frozen=True)
class Card:
card_id: CardId
seq_id: SeqId
common_id: CommonId
organization_id: OrganizationId
is_archived: bool
name: str
dependencies: list[None] # TODO
tags: list[None] # TODO
todo_list_user_id: UserId | None
todo_list_completed: bool | None
creator_user_id: UserId
creation_date: datetime.datetime
detailed_description: str | None
""" TODO, fieds:
'position': -399
'listPosition': -399
'isLane': False
'assignments': [{'userId': 'Faieomp8fuS8DrnyP' 'completed': True}]
'tasksTotal': 0
'tasksDone': 0
'attachments': []
'customFields':
'timeOnBoard': None
'timeOnColumns': None
'favroAttachments': []
"""
@staticmethod
def from_json(json: dict[str, Any]) -> 'Card':
return Card(
card_id=CardId(json['cardId']),
seq_id=SeqId(json['sequentialId']),
common_id=CommonId(json['cardCommonId']),
detailed_description=json.get('detailedDescription'),
is_archived=json['archived'],
organization_id=OrganizationId(json['organizationId']),
name=json['name'],
todo_list_user_id=UserId(json['todoListUserId'])
if 'todoListUserId' in json
else None,
todo_list_completed=json.get('todoListCompleted'),
dependencies=json['dependencies'],
tags=json['tags'],
creator_user_id=UserId(json['createdByUserId']),
creation_date=datetime.datetime.fromisoformat(json['createdAt']),
)