From ca367947a4c4cdbc25857808439e3c41feafe409 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=94=D0=BC=D0=B8=D1=82=D1=80=D0=B8=D0=B9=20=D0=90=D0=BD?= =?UTF-8?q?=D1=84=D0=B8=D0=BC=D0=BE=D0=B2?= Date: Thu, 28 Sep 2023 21:59:41 +0300 Subject: [PATCH] feat: time tracking support --- ya_tracker_client/domain/client/base.py | 4 +- ya_tracker_client/domain/entities/duration.py | 67 +++++++++++++ ya_tracker_client/domain/entities/worklog.py | 45 +++++++++ .../domain/repositories/__init__.py | 2 + ya_tracker_client/domain/repositories/base.py | 21 +++- .../domain/repositories/checklist.py | 12 +-- .../domain/repositories/component.py | 4 +- .../domain/repositories/issue.py | 12 +-- .../domain/repositories/issue_relationship.py | 6 +- .../domain/repositories/queue.py | 14 ++- ya_tracker_client/domain/repositories/user.py | 7 +- .../domain/repositories/worklog.py | 97 +++++++++++++++++++ ya_tracker_client/service/api.py | 2 + 13 files changed, 255 insertions(+), 38 deletions(-) create mode 100644 ya_tracker_client/domain/entities/duration.py create mode 100644 ya_tracker_client/domain/entities/worklog.py create mode 100644 ya_tracker_client/domain/repositories/worklog.py diff --git a/ya_tracker_client/domain/client/base.py b/ya_tracker_client/domain/client/base.py index b9b270e..f8cb2ba 100644 --- a/ya_tracker_client/domain/client/base.py +++ b/ya_tracker_client/domain/client/base.py @@ -57,8 +57,6 @@ async def request( params: dict[str, Any] | None = None, payload: dict[str, Any] | None = None, ) -> bytes: - uri = f"{self._base_url}/{self._api_version}{uri}" - bytes_payload = BytesPayload( value=bytes(serialize_entity(payload), encoding="utf-8"), content_type="application/json", @@ -66,7 +64,7 @@ async def request( status, body = await self._make_request( method=method, - url=uri, + url=f"{self._base_url}/{self._api_version}{uri}", params=params, data=bytes_payload, ) diff --git a/ya_tracker_client/domain/entities/duration.py b/ya_tracker_client/domain/entities/duration.py new file mode 100644 index 0000000..948e59c --- /dev/null +++ b/ya_tracker_client/domain/entities/duration.py @@ -0,0 +1,67 @@ +from re import compile +from typing import Any + +from pydantic import model_validator + +from ya_tracker_client.domain.entities.base import AbstractEntity + + +PATTERN = compile( + r"^P(?=\d+[YMWD])" + r"((?P\d+)Y)?" + r"((?P\d+)M)?" + r"((?P\d+)W)?" + r"((?P\d+)D)?" + r"(?P