satchmo mail.py отправьте html письмо вместо текстового письма
Для моего текущего магазина Satchmo я хотел бы отправлять html-письма вместо всех txt-писем. Судя по регистрационному коду учетной записи satchmo_store, все электронные письма жестко закодированы и используют формат.txt вместо формата html. например, mail.py
"""Sends mail related to accounts."""
from django.conf import settings
from django.utils.translation import ugettext
from satchmo_store.mail import send_store_mail
from satchmo_store.shop.models import Config
from satchmo_store.shop.signals import registration_sender
import logging
log = logging.getLogger('satchmo_store.accounts.mail')
# TODO add html email template
def send_welcome_email(email, first_name, last_name):
"""Send a store new account welcome mail to `email`."""
shop_config = Config.objects.get_current()
subject = ugettext("Welcome to %(shop_name)s")
c = {
'first_name': first_name,
'last_name': last_name,
'site_url': shop_config.site and shop_config.site.domain or 'localhost',
'login_url': settings.LOGIN_URL,
}
send_store_mail(subject, c, 'registration/welcome.txt', [email],
format_subject=True, sender=registration_sender)
Я знаю, что вы можете изменить последнюю строку на следующую, чтобы она работала:
send_store_mail(
subject=subject,
context=c,
template='registration/welcome.txt',
recipients_list=[email],
format_subject=True,
sender=registration_sender,
template_html='registration/welcome.html')
Тем не менее, было бы в моих интересах не трогать код в приложении Satchmo для целей обновления в ближайшем будущем.
Кто-нибудь знает, что было бы идеальным способом переопределить эту функцию или включить электронную почту html для всех функций, связанных с регистрацией, не касаясь приложения satchmo?
Заранее спасибо.
1 ответ
Я внес аналогичные изменения во внутреннее устройство Satchmo следующим образом:
Должна быть возможность скопировать соответствующий файл из установки Satchmo в ваше приложение django. Если вы настроите свой магазин Satchmo в соответствии с этой рекомендацией, это, вероятно, будет означать копирование satchmo/apps/satchmo_store/accounts/mail.py в /localsite/accounts/mail.py. Идея состоит в том, чтобы автоматически загружать локальную копию вместо оригинала.
В вашей локальной копии mail.py вы можете заменить функцию send_store_email(). Держите записку, чтобы вы помнили свои изменения, когда речь заходит об обновлении Satchmo. Вполне вероятно, что исходный файл останется прежним, и переопределение будет работать даже с будущими версиями.
В других случаях, когда вам нужно изменить какое-то поведение класса, вы также можете создать подкласс исходного класса, в котором один изменяет только соответствующие методы, сохраняя при этом исходное имя.