Refactor email settings/preview views to use email handler
still have one thing to refactor before this is really "done" though..
This commit is contained in:
parent
bd43884a1d
commit
489619c337
|
@ -2,7 +2,7 @@
|
||||||
################################################################################
|
################################################################################
|
||||||
#
|
#
|
||||||
# Rattail -- Retail Software Framework
|
# Rattail -- Retail Software Framework
|
||||||
# Copyright © 2010-2018 Lance Edgar
|
# Copyright © 2010-2019 Lance Edgar
|
||||||
#
|
#
|
||||||
# This file is part of Rattail.
|
# This file is part of Rattail.
|
||||||
#
|
#
|
||||||
|
@ -75,9 +75,17 @@ class ProfilesView(MasterView):
|
||||||
'enabled',
|
'enabled',
|
||||||
]
|
]
|
||||||
|
|
||||||
|
def __init__(self, request):
|
||||||
|
super(ProfilesView, self).__init__(request)
|
||||||
|
self.handler = self.get_handler()
|
||||||
|
|
||||||
|
def get_handler(self):
|
||||||
|
# TODO: should let config override which handler we use
|
||||||
|
return mail.EmailHandler(self.rattail_config)
|
||||||
|
|
||||||
def get_data(self, session=None):
|
def get_data(self, session=None):
|
||||||
data = []
|
data = []
|
||||||
for email in mail.iter_emails(self.rattail_config):
|
for email in self.handler.iter_emails():
|
||||||
key = email.key or email.__name__
|
key = email.key or email.__name__
|
||||||
email = email(self.rattail_config, key)
|
email = email(self.rattail_config, key)
|
||||||
data.append(self.normalize(email))
|
data.append(self.normalize(email))
|
||||||
|
@ -135,7 +143,7 @@ class ProfilesView(MasterView):
|
||||||
|
|
||||||
def get_instance(self):
|
def get_instance(self):
|
||||||
key = self.request.matchdict['key']
|
key = self.request.matchdict['key']
|
||||||
return self.normalize(mail.get_email(self.rattail_config, key))
|
return self.normalize(self.handler.get_email(key))
|
||||||
|
|
||||||
def get_instance_title(self, email):
|
def get_instance_title(self, email):
|
||||||
return email['_email'].get_complete_subject(render=False)
|
return email['_email'].get_complete_subject(render=False)
|
||||||
|
@ -211,7 +219,7 @@ class ProfilesView(MasterView):
|
||||||
|
|
||||||
def template_kwargs_view(self, **kwargs):
|
def template_kwargs_view(self, **kwargs):
|
||||||
key = self.request.matchdict['key']
|
key = self.request.matchdict['key']
|
||||||
kwargs['email'] = mail.get_email(self.rattail_config, key)
|
kwargs['email'] = self.handler.get_email(key)
|
||||||
return kwargs
|
return kwargs
|
||||||
|
|
||||||
|
|
||||||
|
@ -261,6 +269,14 @@ class EmailPreview(View):
|
||||||
Lists available email templates, and can show previews of each.
|
Lists available email templates, and can show previews of each.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
def __init__(self, request):
|
||||||
|
super(EmailPreview, self).__init__(request)
|
||||||
|
self.handler = self.get_handler()
|
||||||
|
|
||||||
|
def get_handler(self):
|
||||||
|
# TODO: should let config override which handler we use
|
||||||
|
return mail.EmailHandler(self.rattail_config)
|
||||||
|
|
||||||
def __call__(self):
|
def __call__(self):
|
||||||
|
|
||||||
# Forms submitted via POST are only used for sending emails.
|
# Forms submitted via POST are only used for sending emails.
|
||||||
|
@ -282,7 +298,7 @@ class EmailPreview(View):
|
||||||
if recipient:
|
if recipient:
|
||||||
key = self.request.POST.get('email_key')
|
key = self.request.POST.get('email_key')
|
||||||
if key:
|
if key:
|
||||||
email = mail.get_email(self.rattail_config, key)
|
email = self.handler.get_email(key)
|
||||||
data = email.sample_data(self.request)
|
data = email.sample_data(self.request)
|
||||||
msg = email.make_message(data)
|
msg = email.make_message(data)
|
||||||
|
|
||||||
|
@ -295,13 +311,14 @@ class EmailPreview(View):
|
||||||
del msg['Bcc']
|
del msg['Bcc']
|
||||||
msg['To'] = recipient
|
msg['To'] = recipient
|
||||||
|
|
||||||
|
# TODO: should refactor this to use email handler
|
||||||
sent = mail.deliver_message(self.rattail_config, key, msg)
|
sent = mail.deliver_message(self.rattail_config, key, msg)
|
||||||
|
|
||||||
self.request.session.flash("Preview for '{}' was {}emailed to {}".format(
|
self.request.session.flash("Preview for '{}' was {}emailed to {}".format(
|
||||||
key, '' if sent else '(NOT) ', recipient))
|
key, '' if sent else '(NOT) ', recipient))
|
||||||
|
|
||||||
def preview_template(self, key, type_):
|
def preview_template(self, key, type_):
|
||||||
email = mail.get_email(self.rattail_config, key)
|
email = self.handler.get_email(key)
|
||||||
template = email.get_template(type_)
|
template = email.get_template(type_)
|
||||||
data = email.sample_data(self.request)
|
data = email.sample_data(self.request)
|
||||||
self.request.response.text = template.render(**data)
|
self.request.response.text = template.render(**data)
|
||||||
|
|
Loading…
Reference in a new issue