Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: checklists support #23

Merged
merged 3 commits into from
Sep 28, 2023
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
chore: generate aliases and replace links on docs to international ve…
…rsion
  • Loading branch information
danfimov committed Sep 25, 2023
commit 8b122e3c01e3fac058cd06a05c7e34eff71b0135
12 changes: 10 additions & 2 deletions ya_tracker_client/domain/entities/base.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,15 @@
from abc import ABCMeta

from pydantic import BaseModel
from pydantic import BaseModel, ConfigDict
from pydantic.alias_generators import to_camel


def tracker_alias_generator(s: str) -> str:
"""Convert a string from snake case to camel case and rename url to self"""
if s == "url":
return "self"
return to_camel(s)


class AbstractEntity(BaseModel, metaclass=ABCMeta):
...
model_config = ConfigDict(alias_generator=tracker_alias_generator, populate_by_name=True)
22 changes: 22 additions & 0 deletions ya_tracker_client/domain/entities/checklist.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@

from ya_tracker_client.domain.entities.base import AbstractEntity
from ya_tracker_client.domain.entities.deadline import Deadline


class ChecklistCreate(AbstractEntity):
text: str
checked: bool | None = None
assignee: str | None = None
deadline: Deadline | None = None


class Checklist(AbstractEntity):
...


class IssueWithoutChecklist(AbstractEntity):
url: str
id: str
key: str
version: int

8 changes: 8 additions & 0 deletions ya_tracker_client/domain/entities/deadline.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
from datetime import datetime

from ya_tracker_client.domain.entities.base import AbstractEntity


class Deadline(AbstractEntity):
date: datetime
deadline_type: str = "deadline"
15 changes: 5 additions & 10 deletions ya_tracker_client/domain/entities/issue.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
from datetime import datetime

from pydantic import AliasChoices, Field

from ya_tracker_client.domain.entities.base import AbstractEntity
from ya_tracker_client.domain.entities.issue_type import IssueType
from ya_tracker_client.domain.entities.priority import Priority
Expand All @@ -12,14 +10,14 @@


class IssueShort(AbstractEntity):
url: str = Field(validation_alias=AliasChoices("self", "url"))
url: str
id: str
key: str
display: str


class Issue(AbstractEntity):
url: str = Field(validation_alias=AliasChoices("self", "url"))
url: str
id: str
key: str
version: int
Expand All @@ -39,8 +37,8 @@ class Issue(AbstractEntity):
last_comment_update_at: datetime | None = None
aliases: list[str] | None = None
updated_by: UserShort | None = None
created_at: datetime = Field(validation_alias=AliasChoices("createdAt", "created_at"))
created_by: UserShort = Field(validation_alias=AliasChoices("createdBy", "created_by"))
created_at: datetime
created_by: UserShort
votes: int
updated_at: datetime | None = None
status: Status
Expand All @@ -59,10 +57,7 @@ class IssueCreate(AbstractEntity):
followers: list[UserShort | str] | None = None
assignee: list[UserShort | str] | None = None
unique: str | None = None
attachment_ids: list[str] | None = Field(
default=None,
validation_alias=AliasChoices("attachmentIds", "attachment_ids"),
)
attachment_ids: list[str] | None = None


class IssueEdit(AbstractEntity):
Expand Down
14 changes: 6 additions & 8 deletions ya_tracker_client/domain/entities/issue_relationship.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
from datetime import datetime
from enum import Enum

from pydantic import AliasChoices, Field

from ya_tracker_client.domain.entities.base import AbstractEntity
from ya_tracker_client.domain.entities.issue import IssueShort
from ya_tracker_client.domain.entities.issue_status import IssueStatus
Expand All @@ -22,22 +20,22 @@ class IssueRelationshipTypeEnum(str, Enum):


class IssueRelationshipType(AbstractEntity):
url: str = Field(validation_alias=AliasChoices("self", "url"))
url: str
id: str
inward: str
outward: str


class IssueRelationship(AbstractEntity):
url: str = Field(validation_alias=AliasChoices("self", "url"))
url: str
id: int
type: IssueRelationshipType
direction: str
object: IssueShort
created_at: datetime = Field(validation_alias=AliasChoices("createdAt", "created_at"))
updated_at: datetime = Field(validation_alias=AliasChoices("updatedAt", "updated_at"))
created_by: UserShort = Field(validation_alias=AliasChoices("createdBy", "created_by"))
updated_by: UserShort = Field(validation_alias=AliasChoices("updatedBy", "updated_by"))
created_at: datetime
updated_at: datetime
created_by: UserShort
updated_by: UserShort
assignee: UserShort | None = None
status: IssueStatus

Expand Down
3 changes: 1 addition & 2 deletions ya_tracker_client/domain/entities/issue_status.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
from pydantic import AliasChoices, Field

from ya_tracker_client.domain.entities.base import AbstractEntity


class IssueStatus(AbstractEntity):
url: str = Field(validation_alias=AliasChoices("self", "url"))
url: str
id: str
key: str
display: str
3 changes: 1 addition & 2 deletions ya_tracker_client/domain/entities/issue_type.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
from pydantic import AliasChoices, Field

from ya_tracker_client.domain.entities.base import AbstractEntity


class IssueType(AbstractEntity):
url: str = Field(validation_alias=AliasChoices("self", "url"))
url: str
id: str
key: str
display: str
3 changes: 1 addition & 2 deletions ya_tracker_client/domain/entities/issue_type_config.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
from pydantic import AliasChoices, Field

from ya_tracker_client.domain.entities.base import AbstractEntity
from ya_tracker_client.domain.entities.issue_type import IssueType
Expand All @@ -7,6 +6,6 @@


class IssueTypeConfig(AbstractEntity):
issue_type: IssueType = Field(validation_alias=AliasChoices("issueType", "issue_type"))
issue_type: IssueType
workflow: WorkflowShort
resolutions: list[ResolutionShort]
3 changes: 1 addition & 2 deletions ya_tracker_client/domain/entities/priority.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
from pydantic import AliasChoices, Field

from ya_tracker_client.domain.entities.base import AbstractEntity


class Priority(AbstractEntity):
url: str = Field(validation_alias=AliasChoices("self", "url"))
url: str
id: int
key: str
display: str | None = None
Expand Down
58 changes: 20 additions & 38 deletions ya_tracker_client/domain/entities/queue.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from pydantic import AliasChoices, Field
from pydantic import Field

from ya_tracker_client.domain.entities.base import AbstractEntity
from ya_tracker_client.domain.entities.issue_type import IssueType
Expand All @@ -14,66 +14,48 @@ class QueueIdentifier(AbstractEntity):


class QueueShort(AbstractEntity):
url: str = Field(validation_alias=AliasChoices("self", "url"))
url: str
id: str
key: str
display: str


class QueueVersion(AbstractEntity):
url: str = Field(validation_alias=AliasChoices("self", "url"))
url: str
id: str
display: str


class Queue(AbstractEntity):
url: str = Field(validation_alias=AliasChoices("self", "url"))
url: str
id: int
key: str
version: int
name: str
description: str | None = None # TODO: string in documentation, but may be missing in response - TB145879
lead: UserShort
assign_auto: bool = Field(validation_alias=AliasChoices("assignAuto", "assign_auto"))
default_type: IssueType = Field(validation_alias=AliasChoices("defaultType", "default_type"))
default_priority: Priority = Field(validation_alias=AliasChoices("defaultPriority", "default_priority"))
team_users: list[UserShort] = Field(default=list, validation_alias=AliasChoices("teamUsers", "team_users"))
issue_types: list[IssueType] = Field(default=list, validation_alias=AliasChoices("issueTypes", "issue_types"))
versions: list[QueueVersion] = Field(default=list)
workflows: list[WorkflowShort] = Field(default=list)
deny_voting: bool = Field(validation_alias=AliasChoices("denyVoting", "deny_voting"))
issue_types_config: list[IssueTypeConfig] = Field(
default=list,
validation_alias=AliasChoices("issueTypesConfig", "issue_types_config"),
)
assign_auto: bool
default_type: IssueType
default_priority: Priority
team_users: list[UserShort] = Field(default_factory=list)
issue_types: list[IssueType] = Field(default_factory=list)
versions: list[QueueVersion] = Field(default_factory=list)
workflows: list[WorkflowShort] = Field(default_factory=list)
deny_voting: bool
issue_types_config: list[IssueTypeConfig] = Field(default_factory=list)

# TODO: documentation does not contain this fields - TB145879
deny_conductor_autolink: bool = Field(
validation_alias=AliasChoices("denyConductorAutolink", "deny_conductor_autolink"),
)
deny_tracker_auto_link: bool = Field(
validation_alias=AliasChoices("denyTrackerAutolink", "deny_tracker_auto_link"),
)
use_component_permissions_intersection: bool = Field(
validation_alias=AliasChoices("useComponentPermissionsIntersection", "use_component_permissions_intersection"),
)
workflow_actions_style: str = Field(
validation_alias=AliasChoices("workflowActionsStyle", "workflow_actions_style"),
)
use_last_signature: bool = Field(
validation_alias=AliasChoices("useLastSignature", "use_last_signature"),
)
deny_conductor_autolink: bool | None = None
deny_tracker_auto_link: bool | None = None
use_component_permissions_intersection: bool | None = None
workflow_actions_style: str | None = None
use_last_signature: bool | None = None


class QueueCreate(AbstractEntity):
key: str
name: str
lead: str
default_type: str
default_priority: str = Field(
validation_alias=AliasChoices("defaultPriority", "default_priority"),
)
issue_types_config: list[IssueTypeConfig] = Field(
default=list,
validation_alias=AliasChoices("issueTypesConfig", "issue_types_config"),
)
default_priority: str
issue_types_config: list[IssueTypeConfig] = Field(default_factory=list)
14 changes: 4 additions & 10 deletions ya_tracker_client/domain/entities/queue_field.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@


class QueueField(AbstractEntity):
url: str = Field(validation_alias=AliasChoices("self", "url"))
url: str
id: str
name: str
version: int
Expand All @@ -19,17 +19,11 @@ class QueueField(AbstractEntity):
readonly: bool
options: bool
suggest: bool
options_provider: QueueFieldOptionsProvider | None = Field( # TODO: not required in response - not documented
default=None, validation_alias=AliasChoices("optionsProvider", "options_provider"),
)
query_provider: QueueFieldQueryProvider | None = Field(
default=None, validation_alias=AliasChoices("queryProvider", "query_provider"),
)
options_provider: QueueFieldOptionsProvider | None = None # TODO: not required in response - not documented
query_provider: QueueFieldQueryProvider | None = None
order: int

# TODO: documentation does not contain this fields
suggest_provider: QueueFieldSuggestProvider | None = Field(
default=None, validation_alias=AliasChoices("suggestProvider", "suggest_provider"),
)
suggest_provider: QueueFieldSuggestProvider | None = None
type: str
category: QueueFieldCategory
3 changes: 1 addition & 2 deletions ya_tracker_client/domain/entities/queue_field_category.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
from pydantic import AliasChoices, Field

from ya_tracker_client.domain.entities.base import AbstractEntity


class QueueFieldCategory(AbstractEntity):
url: str = Field(validation_alias=AliasChoices("self", "url"))
url: str
id: str
display: str
8 changes: 3 additions & 5 deletions ya_tracker_client/domain/entities/queue_version.py
Original file line number Diff line number Diff line change
@@ -1,19 +1,17 @@
from datetime import date

from pydantic import AliasChoices, Field

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


class QueueVersion(AbstractEntity):
url: str = Field(validation_alias=AliasChoices("self", "url"))
url: str
id: int
version: int
queue: QueueShort
name: str
description: str | None = None # TODO: string in documentation, but may be missing in response - TB145879
start_date: date | None = Field(default=None, validation_alias=AliasChoices("startDate", "start_date"))
due_date: date | None = Field(default=None, validation_alias=AliasChoices("dueDate", "due_date"))
start_date: date | None = None
due_date: date | None = None
released: bool
archived: bool
3 changes: 1 addition & 2 deletions ya_tracker_client/domain/entities/resolution.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
from pydantic import AliasChoices, Field

from ya_tracker_client.domain.entities.base import AbstractEntity


class ResolutionShort(AbstractEntity):
url: str = Field(validation_alias=AliasChoices("self", "url"))
url: str
id: str
key: str
display: str
3 changes: 1 addition & 2 deletions ya_tracker_client/domain/entities/sprint.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
from pydantic import AliasChoices, Field

from ya_tracker_client.domain.entities.base import AbstractEntity


class Sprint(AbstractEntity):
url: str = Field(validation_alias=AliasChoices("self", "url"))
url: str
id: str
display: str
3 changes: 1 addition & 2 deletions ya_tracker_client/domain/entities/status.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
from pydantic import AliasChoices, Field

from ya_tracker_client.domain.entities.base import AbstractEntity


class Status(AbstractEntity):
url: str = Field(validation_alias=AliasChoices("self", "url"))
url: str
id: str
key: str
display: str
3 changes: 1 addition & 2 deletions ya_tracker_client/domain/entities/transition.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
from pydantic import AliasChoices, Field

from ya_tracker_client.domain.entities.base import AbstractEntity
from ya_tracker_client.domain.entities.issue_status import IssueStatus


class Transition(AbstractEntity):
url: str = Field(validation_alias=AliasChoices("self", "url"))
url: str
id: str
to: IssueStatus
display: str
Loading
Loading