Skip to content

Latest commit

 

History

History
159 lines (120 loc) · 6.13 KB

File metadata and controls

159 lines (120 loc) · 6.13 KB

Сводка реализации: Функция получения подписи пользователя

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

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

  • ✅ В подменю "Work with email settings" (пункт 4) добавлен пункт 6 "Get email signature"
  • ✅ Обновлены choices в Prompt.ask для включения "6"

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

find_user_by_search_term(settings, search_term)

Местоположение: строки 3596-3642

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

  • Поиск пользователя по логину, email, UID или фамилии
  • Обработка нескольких форматов ввода (с/без @domain)
  • Поиск по nickname, aliases и lastName
  • Обработка случаев множественных совпадений

Возвращает:

  • Объект пользователя при успехе
  • None при отсутствии или множественных совпадениях

get_user_email_signature(settings, user_id)

Местоположение: строки 3644-3675

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

  • GET запрос к /admin/v1/org/{org_id}/mail/users/{user_id}/settings/sender_info
  • Механизм повторных попыток (до 3 раз)
  • Логирование всех операций
  • Обработка ошибок HTTP

Возвращает:

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

save_signature_to_file(settings, user, signature_data)

Местоположение: строки 3677-3700

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

  • Проверка наличия поля 'signature' в данных
  • Создание файла с префиксом и логином пользователя
  • Сохранение подписи в UTF-8 кодировке
  • Обработка ошибок файловой системы

Формат файла: {префикс}{логин}.txt

get_email_signature(settings)

Местоположение: строки 3702-3761

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

  • Интерактивный интерфейс с Rich
  • Запрос логина/email/UID/фамилии пользователя
  • Отображение подписи в красивой панели
  • Сохранение в файл
  • Информация о результатах операции

3. Обновлена структура настроек

✅ Добавлено поле в SettingParams

Местоположение: строка 96

email_signature_file_prefix : str

✅ Инициализация в get_settings()

Местоположение: строка 113

email_signature_file_prefix = os.environ.get("EMAIL_SIGNATURE_FILE_PREFIX_ARG", "signature_")

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

✅ README.md

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

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

  • EMAIL_SIGNATURE_FEATURE.md - подробное описание функции
  • CHANGELOG_SIGNATURE_FEATURE.md - детальный changelog
  • IMPLEMENTATION_SUMMARY.md - текущий файл

5. Исправлены ошибки

✅ Синтаксические ошибки в f-строках

  • Исправлены все ошибки с кавычками в f-строках по всему файлу
  • Использован автоматический скрипт для массового исправления
  • Файл успешно компилируется без ошибок

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

Шаг 1: Настройка

Добавьте в .env файл:

EMAIL_SIGNATURE_FILE_PREFIX_ARG=signature_

Шаг 2: Запуск

python3 360_text_admin_console.py

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

  1. Выберите пункт меню 4 "Work with email settings"
  2. Выберите пункт меню 6 "Get email signature"
  3. Введите логин, email, UID или фамилию пользователя

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

  • Подпись отображается в консоли
  • Подпись сохраняется в файл {префикс}{логин}.txt

📋 Примеры

Пример 1: По логину

Enter user login, email, UID or last name: ivan.petrov

Пример 2: По email

Enter user login, email, UID or last name: ivan.petrov@company.com

Пример 3: По UID

Enter user login, email, UID or last name: 1130000000000001

✅ Проверки

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

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

API Endpoint

GET https://api360.yandex.net/admin/v1/org/{org_id}/mail/users/{user_id}/settings/sender_info

Требования

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

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

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

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

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