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