112 lines
3.6 KiB
Python
112 lines
3.6 KiB
Python
class NotificationVerbs:
|
||
TASK_ASSIGNED = "task_assigned"
|
||
TASK_REASSIGNED = "task_reassigned"
|
||
TASK_COMMENT = "task_comment"
|
||
TASK_DUE_DATE_CHANGED = "task_due_date_changed"
|
||
TASK_DUE_SOON = "task_due_soon"
|
||
TASK_OVERDUE = "task_overdue"
|
||
TASK_COMPLETED = "task_completed"
|
||
TASK_REOPENED = "task_reopened"
|
||
TASK_LINKED_OBJECT_ADDED = "task_linked_object_added"
|
||
TASK_BOARD_MEMBER_ADDED = "task_board_member_added"
|
||
|
||
|
||
class ActionURLs:
|
||
@staticmethod
|
||
def task_detail(task) -> str:
|
||
return f"/tasks?board={task.board_id}&task={task.id}"
|
||
|
||
@staticmethod
|
||
def board_detail(board) -> str:
|
||
return f"/tasks?board={board.id}"
|
||
|
||
|
||
class MessageTemplates:
|
||
@staticmethod
|
||
def task_assigned(task, actor_name: str) -> tuple[str, str]:
|
||
return (
|
||
"Вам назначена задача",
|
||
f'{actor_name} назначил вам задачу #{task.id} "{task.title}".',
|
||
)
|
||
|
||
@staticmethod
|
||
def task_reassigned(task, actor_name: str) -> tuple[str, str]:
|
||
return (
|
||
"Исполнитель задачи изменен",
|
||
f'{actor_name} изменил исполнителя задачи #{task.id} "{task.title}".',
|
||
)
|
||
|
||
@staticmethod
|
||
def task_comment(task, actor_name: str, text: str) -> tuple[str, str]:
|
||
preview = text[:160]
|
||
return (
|
||
"Новый комментарий к задаче",
|
||
f'{actor_name} прокомментировал задачу #{task.id} "{task.title}": {preview}',
|
||
)
|
||
|
||
@staticmethod
|
||
def task_due_date_changed(
|
||
task,
|
||
actor_name: str,
|
||
old_due_date,
|
||
new_due_date,
|
||
) -> tuple[str, str]:
|
||
old_value = old_due_date or "без срока"
|
||
new_value = new_due_date or "без срока"
|
||
return (
|
||
"Срок задачи изменен",
|
||
(
|
||
f'{actor_name} изменил срок задачи #{task.id} "{task.title}": '
|
||
f"{old_value} -> {new_value}."
|
||
),
|
||
)
|
||
|
||
@staticmethod
|
||
def task_due_soon(task) -> tuple[str, str]:
|
||
return (
|
||
"Срок задачи сегодня",
|
||
f'Сегодня срок задачи #{task.id} "{task.title}".',
|
||
)
|
||
|
||
@staticmethod
|
||
def task_overdue(task) -> tuple[str, str]:
|
||
return (
|
||
"Задача просрочена",
|
||
f'Просрочена задача #{task.id} "{task.title}".',
|
||
)
|
||
|
||
@staticmethod
|
||
def task_completed(task, actor_name: str) -> tuple[str, str]:
|
||
return (
|
||
"Задача завершена",
|
||
f'{actor_name} завершил задачу #{task.id} "{task.title}".',
|
||
)
|
||
|
||
@staticmethod
|
||
def task_reopened(task, actor_name: str) -> tuple[str, str]:
|
||
return (
|
||
"Задача возвращена в работу",
|
||
f'{actor_name} вернул в работу задачу #{task.id} "{task.title}".',
|
||
)
|
||
|
||
@staticmethod
|
||
def task_linked_object_added(
|
||
task,
|
||
actor_name: str,
|
||
object_type: str,
|
||
) -> tuple[str, str]:
|
||
return (
|
||
"К задаче добавлен связанный объект",
|
||
(
|
||
f'{actor_name} добавил объект "{object_type}" '
|
||
f'к задаче #{task.id} "{task.title}".'
|
||
),
|
||
)
|
||
|
||
@staticmethod
|
||
def board_member_added(board, actor_name: str) -> tuple[str, str]:
|
||
return (
|
||
"Вас добавили на доску",
|
||
f'{actor_name} добавил вас на доску "{board.name}".',
|
||
)
|