Закрыть

Для эффективной работы на сайте используются cookie и обработка персональных данных. Пользуясь этим сайтом, вы соглашаетесь с правилами использования сайта. Подробнее

Цитата дня

Vivazzi.ru

Личный сайт Мальцева Артема

Чтобы стать победителем, сначала нужно победить свою лень.

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

6 января 2017 г. 10: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 оценок)

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

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

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

Права на использование данной статьи, расположенной на настоящей странице http://vivazzi.ru/django-shop/notifications/:

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

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

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

Вам нужно саморазвиваться или вы хотите зарабатывать деньги?

Или вы ищите хорошие IT сервисы или книги? Сохраните свое время и взгляните на мою подборку рекомендаций, которыми постоянно пользуюсь.
Посмотреть рекомендации

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

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

Чтобы оставить комментарий от своего имени войдите или зарегистрируйтесь обычным способом или через социальные сети:

Отправить

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

Попробуйте