2026-09-07 19:43:48 +03:00

94 lines
3.2 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""
Конфигурация уведомлений для модуля 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] + "..."