Skip to content

Commit

Permalink
feat: macros support
Browse files Browse the repository at this point in the history
  • Loading branch information
danfimov committed Sep 30, 2023
1 parent 936d5c5 commit 7d20f14
Show file tree
Hide file tree
Showing 7 changed files with 118 additions and 9 deletions.
1 change: 1 addition & 0 deletions examples/get_test_entities.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ async def main() -> None:
await client.get_projects_list(expand='queues')
await client.get_external_applications()
await client.get_external_links("TRACKER-1")
await client.get_macros('TRACKER')

await client.stop()

Expand Down
12 changes: 12 additions & 0 deletions ya_tracker_client/domain/entities/issue_field.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
from ya_tracker_client.domain.entities.base import AbstractEntity


class IssueFieldShort(AbstractEntity):
url: str
id: str
display: str


class IssueFieldChange(AbstractEntity):
field: IssueFieldShort
value: list
24 changes: 24 additions & 0 deletions ya_tracker_client/domain/entities/macro.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
from pydantic import Field

from ya_tracker_client.domain.entities.base import AbstractEntity
from ya_tracker_client.domain.entities.issue_field import IssueFieldChange
from ya_tracker_client.domain.entities.queue import QueueShort


class Macro(AbstractEntity):
url: str
id: int
queue: QueueShort
name: str
body: str
field_changes: list[IssueFieldChange] = Field(default_factory=list)


class MacroCreate(AbstractEntity):
name: str
body: str | None = None
field_changes: list[IssueFieldChange] | None = None


class MacroEdit(MacroCreate):
pass
4 changes: 2 additions & 2 deletions ya_tracker_client/domain/repositories/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
from ya_tracker_client.domain.repositories.issue import IssueRepository
from ya_tracker_client.domain.repositories.issue_field import IssueFieldRepository
from ya_tracker_client.domain.repositories.issue_relationship import IssueRelationshipRepository
from ya_tracker_client.domain.repositories.macros import MacrosRepository
from ya_tracker_client.domain.repositories.macro import MacroRepository
from ya_tracker_client.domain.repositories.project import ProjectRepository
from ya_tracker_client.domain.repositories.queue import QueueRepository
from ya_tracker_client.domain.repositories.user import UserRepository
Expand All @@ -26,7 +26,7 @@
"IssueFieldRepository",
"IssueRelationshipRepository",
"IssueRepository",
"MacrosRepository",
"MacroRepository",
"ProjectRepository",
"QueueRepository",
"UserRepository",
Expand Down
77 changes: 77 additions & 0 deletions ya_tracker_client/domain/repositories/macro.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
from ya_tracker_client.domain.entities.issue_field import IssueFieldChange
from ya_tracker_client.domain.entities.macro import Macro, MacroCreate, MacroEdit
from ya_tracker_client.domain.repositories.base import EntityRepository


class MacroRepository(EntityRepository):
async def get_macros(self, queue_id: str) -> list[Macro]:
"""
YC docs: https://cloud.yandex.com/en/docs/tracker/get-macroses
"""
raw_response = await self._client.request(
method="GET",
uri=f"/queues/{queue_id}/macros",
)
return self._decode(raw_response, Macro, plural=True)

async def get_macro(self, queue_id: str, macro_id: str) -> Macro:
"""
YC docs: https://cloud.yandex.com/en/docs/tracker/get-macros
"""
raw_response = await self._client.request(
method="GET",
uri=f"/queues/{queue_id}/macros/{macro_id}",
)
return self._decode(raw_response, Macro)

async def create_macro(
self,
queue_id: str,
name: str,
body: str | None = None,
field_changes: list[IssueFieldChange] | None = None,
) -> Macro:
"""
YC docs: https://cloud.yandex.com/en/docs/tracker/post-macros
"""
raw_response = await self._client.request(
method="POST",
uri=f"/queues/{queue_id}/macros",
payload=MacroCreate(
name=name,
body=body,
field_changes=field_changes,
).model_dump(exclude_none=True, by_alias=True),
)
return self._decode(raw_response, Macro)

async def edit_macro(
self,
queue_id: str,
macro_id: str,
name: str,
body: str | None = None,
field_changes: list[IssueFieldChange] | None = None,
) -> Macro:
"""
YC docs: https://cloud.yandex.com/en/docs/tracker/patch-macros
"""
raw_response = await self._client.request(
method="PATCH",
uri=f"/queues/{queue_id}/macros/{macro_id}",
payload=MacroEdit(
name=name,
body=body,
field_changes=field_changes,
).model_dump(exclude_none=True, by_alias=True),
)
return self._decode(raw_response, Macro)

async def delete_macro(self, queue_id: str, macro_id: str) -> None:
"""
YC docs: https://cloud.yandex.com/en/docs/tracker/delete-macros
"""
await self._client.request(
method="DELETE",
uri=f"/queues/{queue_id}/macros/{macro_id}",
)
5 changes: 0 additions & 5 deletions ya_tracker_client/domain/repositories/macros.py

This file was deleted.

4 changes: 2 additions & 2 deletions ya_tracker_client/service/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
IssueFieldRepository,
IssueRelationshipRepository,
IssueRepository,
MacrosRepository,
MacroRepository,
ProjectRepository,
QueueRepository,
UserRepository,
Expand All @@ -29,7 +29,7 @@ class YaTrackerClient(
IssueFieldRepository,
IssueRelationshipRepository,
IssueRepository,
MacrosRepository,
MacroRepository,
ProjectRepository,
QueueRepository,
UserRepository,
Expand Down

0 comments on commit 7d20f14

Please sign in to comment.