This commit is contained in:
parent
15906dac21
commit
fe59477cfa
|
@ -6,80 +6,10 @@ import functools
|
|||
from collections.abc import Iterator
|
||||
from logging import getLogger
|
||||
|
||||
from .favro_data_model import Card, CardId, SeqId, OrganizationId
|
||||
|
||||
logger = getLogger(__name__)
|
||||
|
||||
# Types
|
||||
|
||||
@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']),
|
||||
)
|
||||
|
||||
# Endpoints
|
||||
URL_API_ROOT = 'https://favro.com/api/v1'
|
||||
URL_GET_ALL_CARDS = URL_API_ROOT+'/cards'
|
||||
|
|
80
favro_sync/favro_data_model.py
Normal file
80
favro_sync/favro_data_model.py
Normal file
|
@ -0,0 +1,80 @@
|
|||
import requests
|
||||
import dataclasses
|
||||
import datetime
|
||||
from typing import Any
|
||||
import functools
|
||||
from collections.abc import Iterator
|
||||
from logging import getLogger
|
||||
|
||||
|
||||
@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']),
|
||||
)
|
||||
|
||||
|
|
@ -4,7 +4,8 @@ import re
|
|||
import dataclasses
|
||||
from collections.abc import Iterator
|
||||
|
||||
from .favro_client import FavroClient, CardId, SeqId, Card
|
||||
from .favro_data_model import CardId, SeqId, Card
|
||||
from .favro_client import FavroClient
|
||||
|
||||
fuse.fuse_python_api = (0, 2)
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user