1

現在のsatchmoストアでは、すべてのtxtメールではなくhtmlメールを送信したいと思います。satchmo_storeアカウント登録コードの外観により、すべての電子メールはハードコードされており、html形式ではなく.txt形式を使用しています。例: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アプリのコードに触れないことが私の最大の関心事です。

satchmoアプリに触れることなく、この機能をオーバーライドしたり、登録に関連するすべての機能のHTMLメールを有効にしたりする理想的な方法を知っている人はいますか?

前もって感謝します。

4

1 に答える 1

1

次の方法で、Satchmoの内部に同様の変更を加えました。

関連するファイルをSatchmoインストールからdjangoアプリケーションにコピーできるはずです。この推奨事項に従ってSatchmoショップを設定した場合、それはおそらくsatchmo / apps / satchmo_store / accounts/mail.pyを/localsite/accounts/mail.pyにコピーすることを意味します。アイデアは、オリジナルの代わりにローカルコピーを自動的にロードすることです。

mail.pyのローカルコピーで、send_store_email()関数を置き換えることができます。Satchmoのアップグレードに関しては、変更内容を覚えておくことができるようにメモしておいてください。元のファイルは同じである可能性が高く、オーバーライドは将来のバージョンでも機能します。

また、クラスの動作を変更する必要がある場合は、元の名前を維持したまま、関連するメソッドのみを変更して元のクラスをサブクラス化することもできます。

于 2012-11-23T21:06:03.240 に答える