Skip to content

Latest commit

 

History

History
217 lines (174 loc) · 8.23 KB

File metadata and controls

217 lines (174 loc) · 8.23 KB

Реализация функции установки подписей

✅ Выполненные задачи

1. Добавлен новый пункт меню

  • ✅ В подменю "Work with email settings" (пункт 4) добавлен пункт 7 "Set email signature"
  • ✅ Обновлены choices в Prompt.ask для включения "7"
  • ✅ Добавлен вызов функции set_email_signature(settings)

2. Реализованы функции

read_users_from_file(file_path)

Местоположение: строки 3748-3767

Функциональность:

  • Чтение файла с пользователями
  • Пропуск строк, начинающихся с #
  • Создание структуры данных для каждого пользователя
  • Обработка ошибок файловой системы

Возвращает:

  • Список словарей с данными пользователей
  • None при ошибке

validate_users(settings, users_data)

Местоположение: строки 3769-3794

Функциональность:

  • Валидация каждого пользователя в Яндекс 360
  • Использование существующей функции find_user_by_search_term
  • Создание списка проблемных строк
  • Логирование результатов поиска

Возвращает:

  • Список проблемных строк при ошибках
  • False при критических ошибках

load_signature_template(template_path)

Местоположение: строки 3796-3805

Функциональность:

  • Загрузка HTML шаблона подписи из файла
  • Обработка ошибок файловой системы
  • Поддержка UTF-8 кодировки

Возвращает:

  • Содержимое шаблона при успехе
  • None при ошибке

substitute_template_variables(template, user)

Местоположение: строки 3807-3833

Функциональность:

  • Подстановка переменных пользователя в шаблон
  • Поддержка переменных: {first}, {middle}, {last}, {position}, {email}, {phone}
  • Получение данных из структуры пользователя Яндекс 360
  • Обработка отсутствующих полей

Возвращает:

  • Шаблон с подставленными значениями

set_user_signature(settings, user, signature_text)

Местоположение: строки 3835-3878

Функциональность:

  • POST запрос к API для установки подписи
  • Подготовка данных согласно официальной документации
  • Механизм повторных попыток (до 3 раз)
  • Логирование всех операций

API Endpoint:

POST /admin/v1/org/{orgId}/mail/users/{userId}/settings/sender_info

Структура данных:

{
    "signs": [
        {
            "emails": ["user@domain.com"],
            "isDefault": true,
            "text": "HTML подпись",
            "lang": "ru"
        }
    ],
    "signPosition": "bottom"
}

set_email_signature(settings)

Местоположение: строки 3880-3992

Функциональность:

  • Интерактивный интерфейс с Rich
  • Запрос путей к файлам
  • Валидация пользователей
  • Загрузка и предварительный просмотр шаблона
  • Подтверждение пользователя
  • Массовая установка подписей
  • Статистика результатов

3. Созданы файлы-примеры

signature_template.html

Содержимое:

<div>-- </div>
<div><em>С Уважением,</em></div>
<div> </div>
<div><span style="font-family:'comic sans ms' , sans-serif;font-size:16px;line-height:normal"><strong>{first} {middle} {last} ❤️</strong></span></div>
<div><blockquote><div><span style="color:#4b0082">email</span>: <a href="mailto:{email}" rel="noopener noreferrer">{email}</a></div></blockquote></div>
<div><blockquote><div>tel: {phone}</div></blockquote></div>
<div><blockquote><div>position: {position}</div></blockquote></div>
<div><a href="https://360.yandex.ru">site</a></div>
<div> </div>
<div><img src="https://avatars.mds.yandex.net/get-yapic/36689/ibZ4wLaL4Vrw5rZRmobgBL2fu0-1/islands-200" /></div>

users_signature_input.csv

Содержимое:

# Пример входного файла для установки подписей
# Строки, начинающиеся с #, игнорируются
# В каждой строке: алиас, email, id или фамилия пользователя
alavret
ivan.petrov
user@company.com
1130000000000001
Петров

4. Обновлена документация

✅ README.md

  • Добавлено описание новой функции в разделе "Настройки электронной почты"

✅ Созданы дополнительные файлы документации

  • SET_SIGNATURE_FEATURE.md - подробное описание функции
  • SET_SIGNATURE_IMPLEMENTATION.md - текущий файл

🎯 Использование

Шаг 1: Подготовка файлов

  1. Создайте файл с пользователями (users_signature_input.csv)
  2. Создайте шаблон подписи (signature_template.html)

Шаг 2: Запуск

python3 360_text_admin_console.py

Шаг 3: Навигация

  1. Выберите пункт меню 4 "Work with email settings"
  2. Выберите пункт меню 7 "Set email signature"
  3. Укажите путь к файлу с пользователями
  4. Укажите путь к шаблону подписи
  5. Подтвердите выполнение

Шаг 4: Результат

  • Валидация всех пользователей
  • Предварительный просмотр шаблона
  • Массовая установка подписей
  • Статистика результатов

📋 Примеры

Пример 1: Входной файл

# IT отдел
alavret
ivan.petrov
# Маркетинг
user@company.com

Пример 2: Шаблон подписи

<div><strong>{first} {last}</strong></div>
<div>Email: {email}</div>
<div>Phone: {phone}</div>
<div>Position: {position}</div>

✅ Проверки

  • ✅ Синтаксис Python корректен
  • ✅ Импорты работают
  • ✅ Меню обновлено
  • ✅ Функции реализованы
  • ✅ Документация обновлена
  • ✅ Обработка ошибок реализована
  • ✅ API соответствует официальной документации

📝 Технические детали

API Endpoint

POST https://api360.yandex.net/admin/v1/org/{orgId}/mail/users/{userId}/settings/sender_info

Требования

  • Python 3.6+
  • Rich library
  • OAuth токен с правами на управление настройками почты
  • Доступ к API Яндекс 360

Обработка ошибок

  • Retry механизм: до 3 попыток при ошибках API
  • Логирование: все операции записываются в лог
  • Пользовательские сообщения: красивые панели с Rich
  • Graceful degradation: корректная обработка всех исключений
  • Валидация: проверка всех входных данных

🎉 Статус: ЗАВЕРШЕНО

Все задачи выполнены успешно. Функциональность готова к использованию.