Skip to content

Release 1.4.0 ru

Alex edited this page Oct 26, 2026 · 1 revision

Commentail 1.4.0 — независимая почта и ранний отказ по правилам

English · Русский

Стабильный выпуск · 26 октября 2026 · MIT.

В README загруженных на PyPI архивов остались прежние пометки кандидата. Версия пакета и код — 1.4.0; используйте команды обновления ниже и актуальную документацию репозитория/wiki. Загруженные архивы не заменялись.

Изменения

Настройте почту Commentail независимо от обычных писем Django через общий для проекта словарь COMMENTAIL_EMAIL:

  • BACKEND выбирает класс почтового backend Django.
  • OPTIONS передаёт аргументы его конструктора: например, отдельные учётные данные SMTP или поддерживаемые параметры API-провайдера.
  • FROM_EMAIL задаёт отправителя для всех типов писем Commentail.

Без переопределения сохраняются существующие backend и отправитель Django. Можно изменить только отправителя. Непустые параметры требуют явно выбранного backend. Словарь находится в настройках Django, секреты загружаются из окружения; полей в админке Wagtail и переопределений по Site нет.

Сохраняются существующие очередь и расписание, включая повторы, захваты заданий, стабильный Message-ID, проверки доступа и исходные сроки ссылок. Ошибка провайдера не вызывает переход на общий backend. Ожидающие задания используют действующую конфигурацию во время обработки, в том числе если поставлены в очередь до обновления.

См. справочник и примеры SMTP/API. Обновление не добавляет зависимости от провайдера и не меняет матрицу поддержки.

Команда test_commentail_email --to recipient@example.org отправляет одно проверочное письмо напрямую через backend и отправителя Commentail. Она не создаёт комментариев и заданий очереди. Успех означает принятие письма backend, а не доставку во входящие. Применение и ограничения описаны в справочнике почты.

В режиме «По правилам» новые гостевые сообщения сразу отклоняются при совпадении с включённым правилом «Отклонить». Форма показывает причину правила и сохраняет черновик с JavaScript и без него. Комментарий, письмо подтверждения и письмо об отклонении не создаются. CAPTCHA и лимиты попыток сохраняются. Правила проверки и мягкие сигналы сохраняют прежний порядок подтверждения и модерации; отправка зарегистрированных пользователей и авторские правки работают по прежнему порядку. Причину задаёт совпавшее правило «Отклонить» с наименьшим ID; пустая причина заменяется локализованным общим сообщением. Причина — обычный текст длиной не более 2000 символов.

CSV-экспорт теперь включает reason. Старые файлы из трёх колонок принимаются и сохраняют существующие причины; пустая ячейка в присутствующей колонке reason очищает причину. Миграция 0019_moderation_rule_reason добавляет необязательное поле с пустыми значениями для прежних правил. Обратная миграция удаляет настроенные причины правил.

Обновление с 1.3.2

  1. Сделайте обычную резервную копию и проверьте обновление на изолированной копии. Затем установите python -m pip install commentail==1.4.0 в окружении сайта.
  2. Без COMMENTAIL_EMAIL поведение сохраняется. Для отдельной почты добавьте словарь в настройки проекта и передайте секреты веб-приложению и фоновым worker'ам.
  3. Выполните migrate, check и обычную сборку статики, затем перезапустите приложение и worker'ы. Примените 0019_moderation_rule_reason; пересмотрите включённые правила «Отклонить»: новые совпавшие гостевые тексты теперь отклоняются до подтверждения email.
  4. Проверьте, что обычные письма сайта используют прежние настройки. Отправьте гостевой комментарий, обработайте очередь, подтвердите email и проверьте выбранного отправителя. Пройдите полный сценарий уведомлений с разрешённым тестовым получателем, прежде чем использовать провайдера для всех.

Если параметры SMTP пропущены, Django может унаследовать соответствующие общие значения EMAIL_*. Укажите все поля подключения, нужные отдельному аккаунту. Сохраняется ограничение SMTP-тайм-аута; для других backend тайм-аут настраивается средствами провайдера. Изменение ключей автоматически не возвращает неудачные задания в очередь.

При переходе с 1.3.0 или более ранней версии также выполните процедуру необратимой миграции 1.3.1. Требования остановки записи и согласованной резервной копии базы, ключа и пакета сохраняются.

Границы проверки

Регрессионные тесты конфигурации и транспорта проверяют отдельную и общую отправку, выбор отправителя, аргументы конструктора, ошибки и повторы очереди. Дополнительно проверяются тестовое письмо, ранний отказ, сохранение приватного черновика, выбор причины, лимиты попыток и совместимость CSV. Локальные backend и имитация провайдера подтверждают поведение приложения, а не реальную доставку и попадание во входящие. Hosted CI точного публикуемого коммита, публикация пакета и приёмка на рабочем сайте остаются отдельными шагами.

Clone this wiki locally