94 lines
3.2 KiB
Python
94 lines
3.2 KiB
Python
"""
|
||
Конфигурация уведомлений для модуля Feed.
|
||
|
||
Содержит:
|
||
- NotificationVerbs - глаголы для уведомлений
|
||
- MessageTemplates - шаблоны сообщений
|
||
- ActionURLs - URL-адреса действий
|
||
"""
|
||
|
||
|
||
class NotificationVerbs:
|
||
"""Глаголы (verbs) для уведомлений feed."""
|
||
|
||
NEW_POST = "feed_new_post"
|
||
POST_COMMENT = "feed_post_comment"
|
||
POST_REACTION = "feed_post_reaction"
|
||
|
||
|
||
class MessageTemplates:
|
||
"""Шаблоны сообщений для уведомлений feed."""
|
||
|
||
@staticmethod
|
||
def new_post_company() -> str:
|
||
"""Шаблон для новости компании."""
|
||
return "Новая публикация компании"
|
||
|
||
@staticmethod
|
||
def new_post_department(department_name: str) -> str:
|
||
"""Шаблон для новости отдела."""
|
||
return f"Новая публикация отдела {department_name}"
|
||
|
||
@staticmethod
|
||
def new_post_employee(author_name: str) -> str:
|
||
"""Шаблон для личной публикации."""
|
||
return f"Новая публикация от {author_name}"
|
||
|
||
@staticmethod
|
||
def comment(author_name: str, comment_text: str) -> str:
|
||
"""Шаблон для комментария к публикации."""
|
||
return f"{author_name} прокомментировал: {comment_text}"
|
||
|
||
@staticmethod
|
||
def comment_title() -> str:
|
||
"""Заголовок для уведомления о комментарии."""
|
||
return "Новый комментарий к вашей публикации"
|
||
|
||
@staticmethod
|
||
def reaction(user_name: str, post_title: str) -> str:
|
||
"""Шаблон для реакции на публикацию."""
|
||
return f'{user_name} понравилась публикация "{post_title}"'
|
||
|
||
@staticmethod
|
||
def reaction_title() -> str:
|
||
"""Заголовок для уведомления о реакции."""
|
||
return "Ваша публикация понравилась"
|
||
|
||
|
||
class ActionURLs:
|
||
"""URL-адреса для действий с публикациями."""
|
||
|
||
# Пока все действия ведут на главную страницу
|
||
# TODO: реализовать прямые ссылки на публикации
|
||
FEED_HOME = "/"
|
||
|
||
@staticmethod
|
||
def post_detail(post_id: int) -> str:
|
||
"""
|
||
Возвращает URL-адрес публикации.
|
||
|
||
TODO: реализовать отдельную страницу публикации
|
||
"""
|
||
return f"/?post={post_id}" # Временное решение
|
||
|
||
|
||
def truncate_text(text: str, max_length: int = 100) -> str:
|
||
"""
|
||
Обрезает текст до указанной длины.
|
||
|
||
Args:
|
||
text: Исходный текст
|
||
max_length: Максимальная длина (по умолчанию 100)
|
||
|
||
Returns:
|
||
Обрезанный текст с многоточием если нужно
|
||
"""
|
||
if not text:
|
||
return ""
|
||
|
||
text = text.strip()
|
||
if len(text) <= max_length:
|
||
return text
|
||
|
||
return text[: max_length - 3] + "..."
|