ng.app.mailfeed.mailtemplate
2008-04-03 13:32Компонент предоставляющий шаблон письма и выполняющий заполнение его полей.
Краткое описание пакета
Продукт представляет простой интерфейс темплейтов для генерации писем по шаблону.
Способ реализации
Письмо формируется двухступенчатой заменой в питоновской строке формата. Предполагается, что строка формата используется два раза, для определения полей "формы" (одинаковых для всех экземпляров письма) и для определения полей адреса (уникальных для каждого экземпляра).
ПРИМЕР:
шаблон 1
Этот шаблон хранится в атрибуте темплейта:
"""Уважаемый %%(aname)s! Поступила заявка на вакансию: Вакансия: %(vacancy)s Имя: %(name)s Опыт работы: %(experience)s Возраст: %(age)s Сайт компании."""
шаблон 2
Этот шаблон получается после первого применения к темплейту списка полей формы:
"""Уважаемый %(aname)s! Поступила заявка на вакансию: Вакансия: программист Имя: Иван Иванов Опыт работы: более четырех лет Возраст: 29 лет Сайт компании."""
шаблон 3
Этот шаблон получается премененим шаблона-2 к адресу:
"""Уважаемый Степан Ломов! Поступила заявка на вакансию: Вакансия: программист Имя: Иван Иванов Опыт работы: более четырех лет Возраст: 29 лет Сайт компании."""
Письмо в MIME
В зависимости от параметров рассылки может быть сформировано письмо в формате MIME, для чего могут использоваться конверторы из продукта ng.app.converter (например, конвертор для ST может быть использован для формирования HTML-части письма в формате с альтернативным содержимым)
Интерфейсы
- IMailTemplate
Предоставляет первичный шаблон темплейта
- subject : TextLine
- Тема письма, содержит строку формата текста
- body : Text
- Тело письма, содержит строку формата текста
- charset : TextLine (UTF-8)
- Набор символов, используемый письмом
- mimetype : TextLine (text/plain)
- Тип содержимого шаблона
- converter : TextLine select from convertors vocabulary
- Конвертор, используемый для конвертирования письма в html
- mimeadapter : TextLine select from adapters vocabulary
- Конвертор, используемый для конвертирования письма в MIME-письмо.
- isadaptive : Bool (True)
- В процессе применения шаблона, несуществующие в словаре ключи заменяются на строку "%(" <ключ> ")s", что позволяет не выделятся явно подстановки первого и второго уровня.
- apply() : dict -> IMailTemplate
- Функция, выполняющая один шаг преобразования письма, на выходе функции получается неперзистент-объект, с выполененной заменой в полях subject и body по словарю, и копией всех остальных полей.
- IMailTempleateExt(IMailTemplate)
Расширенный интерфейс темплейта, со встроенными полями адресов. Расширенный интерфейс используется только у не-перзистент класса, для подачи полей на вход адаптера к IMailMessage.
- mailfrom : TextLine
- Адрес от которого отправляется письмо.
- rcptto : TextLine
- Адрес на который отправляется письмо.
- IMailTemplateAnnotable
- Указывает, что данный объект может иметь аннотацию c IMailTemplate
- IMailTemplateUtilitable
Указывает, что данный объект может иметь утилиту с IMailTemplate
- template : TextLine select from IMailTemplate utilities vocabulary
- Имя темплейта, выбираемого из словаря темплейтов.
- IMailMessage
Подготовленное сообщение в формате MIME (или другом формате, безразлично), поля:
- body
- Текст сообщения
- rcptto
- Кому сообщение (используется коннектором)
Классы
Классы темплейта подразумевают что темплейт используется в двух режимах: как самостоятельная утилита и как аннотация (см. "Аннотации.txt"). Выбор режима осуществляется указанием интерфейса-маркера (IMailTemplateAnnotable или IMailTemplateUtilitable), а поиск темплейта всегда осуществляется от адаптированием контекста к интерфейсу IMailTemplate. Реализация адаптеров описана в статье Адаптация как способ ассоциации компонент.txt.
- MailTemplateBase(object)
- Базовый класс темплейта, он же темплейт промежуточного преобразования
- MailTemplateAnnotation(MailTemplateBase,Persistent)
- Темплейт как аннотация
- MailTemplate(MailTemplateAnnotation,Contained)
- Темплейт как утилита
Адаптеры
IMailMessageAlternative(IMailMessage): IMailTemplateExt -> IMailMessage
Виды
- templateselect.html
- Вид для интерфейса IMailTemplateUtilitable
- mailtemplate.html
- Редактор интерфейса IMailTemplate, что бы создать его так, что бы он не зависел от способа связывания темплейта внимательно прочитайте статью Директивы для создания видов и форм.txt, а также посмотрите реализацию редактирования аннотаций в продукте ng.content.annotation.