14. Оповещения

6 января 2017 г. 15:05

Всякий раз когда статус в модели Order изменяется, встроенная машина конечных состояний выдаёт сигнал, используя Django сигналы. Эти сигналы принимаются django-SHOP оповещениями.

14.1. Оповещения в админке

В Django админ-бекенде, находящимся в Start > Shop > Notification, покупатель может сконфигурировать, какой email кому отправлять в зависимости от происходящих событий. При добавлении или редактировании оповещения, мы получаем маску формы с четырьмя полями ввода:

14.1.1. Идентификатор оповещения

Произвольное имя, используемое для различия оповещений. К примеру, продавец может назвать оповещение как "Заказ подтверждён, оплачено через PayPal".

14.1.2. Тип события

Каждый процесс заказа объявляет набор целей. Например, класс PayInAdvanceWorkflowMixin объявляет следующие цели: “Ожидается оплата”, “Внесена предоплата” и “Оплата не требуется”.

Продавец может настроить оповещения для каждой цели. Здесь он должен выбрать один из подготовленной коллекции.

14.1.3. Получатель

Переходы события передаются всякий раз, когда изменяется статус в заказе. Каждый заказ принадлежит одному покупателю, и обычно он первый информируется, когда какие-то изменения произошли.

Но другие лица в контексте данного интернет-магазина также заинтересованы в получении оповещений. В django-SHOP все сотрудники имеют право получать оповещения, которые принадлежат некоторой группе, имеющих право управлять сайтом.

14.1.4. Email Шаблоны

В разделе Start > Post Office > Email Templates можно выбрать шаблоны для Emails.

14.1.5. Вложения к оповещениям

Вы можете прикрепить один или несколько статических файлов, которые будут прикреплены к письму. Обычно, это pdf файл с условиями обслуживания. Так как сотрудники интернет-магазина не заинтересованы в получении таких вложений, то эти вложения получают только покупатели.

14.2. Post Office

Email-сообщения для подтверждения заказа отправляются django-SHOP ассинхронно. Причина в том, что иногда соединение сервера приложений с SMTP занимает несколько секунд, а затем только отправляет Email. Осуществлять отправку сообщения сихронным способом недопустимо во время самых важных фаз покупок.

Поэтому django-SHOP отправляет все сгенерированные письма, используя систему очередей в Post Office. Это приложение может хранить набор различных email шаблонов, которые используют такой же синтаксис шаблонного движка Django. Email-письма могут быть отрендерены как простой текст и/или HTML.

Когда электронные письма в очереди, объект выбранного шаблона содержит сериализованный контекст как JSON. Эти очереди сообщений электронной почты доступны в административной части Start > Post Office > Emails. Их статус может быть либо "в очереди", "отправлено" или "не удалось".

Команда send_queued_mail рендерит и отправляет письма данным получателям. Во время этого шага, данный шаблон рендерится применяя сохранённый контекст. Их статус затем изменяется на "отправлено" или в случае какой-то проблемы "не удалось".

Если django-SHOP настроен для работы в многоязычной среде, post office рендерит письмо на языке, используемом в процессе создания заказа.

14.2.1. Шаблоны для писем

Поля сообщения могут содержать любой код, который является валидным для Django шаблонов. Часто, письма содержат информацию о том, какие товары заказаны. Этот список часто является общим для всех email шаблонов, поэтому рекомендуется подготовить эти данные в базовом шаблоне. В приложении создайте эти базовые шаблоны внутри папки templates/myshop/email/.... Затем просто расширьте шаблон с помощью хорошо известного шаблонного тега:

{% extends "myshop/email/somebase.html" %}

14.2.1.1. Предостережения при использовании HTML сообщений

Отображение HTML в почтовых клиентах - это боль. Никто реально не может сказать, какие HTML теги разрешены в каком клиенте - а также есть другие программы для чтения электронных писем, которых намного больше, чем браузеров.

Поэтому верстать HTML шаблоны для писем нужно очень и очень консервативно. Это может показаться анахронизмом, но до сих пор наилучшей практикой является использование элемента <table>, и, при необходимости, помещать его в их <TD> (данные таблицы) элементы. Кроме того, нужно использовать встроенные стили, а не элемент <style>, содержащий блоки CSS. Рекомендуется использовать специальную структуру электронной почты, чтобы избежать неприятных причуд при рендере шаблонов.

Изображения могут быть встроены в HTML письма двумя разными способами. Первый это хранить изображения на сервере и прописывывать URI, ссылающихся на них. Поэтому django-SHOP добавляет URI в объект RenderContext для этого веб-сайта и сохраняет его в качестве переменной контекста с именем ABSOLUTE_BASE_URI. По соображениям безопасности, большинство почтовых клиентов не загружают внешние изображения, размещенные по умолчанию. Сам клиент должен осуществить запрос на загрузку их из внешних источников.

Другой способ добавить изображения в HTML письма - размещения их в inline теги. Другими словами, вместо URI ссылки использовать встраиваемые в виде строки в кодировке base64. Easy-thumbnails для этого предлагает шаблонный фильтр data_uri для выполнения этой операции. Это, конечно, значительно увеличивает размер письма, поэтому данный способ подходит для небольших изображений.

Оцените статью

0 из 5 (всего 0 оценок)

captcha
Отмеченные звёздочкой поля ( * ) являются обязательными для заполнения.

Спасибо за ваш отзыв!

После нажатия кнопки "Отправить" ваше сообщение будет доставлено мне на почту.

Автор перевода

Артём Мальцев

Веб-разработчик, владеющий знаниями языка программирования Python, фреймворка Django, системы управления содержимым сайта Django CMS, платформы для создания интернет-магазина Django Shop и многих различных приложений, использующих эти технологии.

Права на использование материала, расположенного на этой странице https://vivazzi.pro/ru/django-shop/notifications/:

Разрешается копировать материал с указанием её автора и ссылки на оригинал без использования параметра rel="nofollow" в теге <a>. Использование:

Автор перевода: Артём Мальцев
Ссылка на перевод статьи: <a href="https://vivazzi.pro/ru/django-shop/notifications/">https://vivazzi.pro/ru/django-shop/notifications/</a>

Больше: Правила использования сайта

Представляю вашему вниманию книгу, написанную моим близким другом Максимом Макуриным: Секреты эффективного управления ассортиментом.

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

Комментарии: 0

Вы можете оставить комментарий как незарегистрированный пользователь.

Но зарегистрировавшись, вы сможете:

  • получать оповещения об ответах
  • просматривать свои комментарии
  • иметь возможность использовать все функции разработанных сервисов

Для комментирования от своего имени войдите или зарегистрируйтесь на сайте Vuspace

Отправить

На данный момент нет специального поиска, поэтому я предлагаю воспользоваться обычной поисковой системой, например, Google, добавив "vivazzi" после своего запроса.

Попробуйте

Выберите валюту для отображения денежных единиц