Expose basic way to send test email
most of the mechanics of sending email could already be tested by sending a "preview" email of any type, or e.g. via Feedback. but it seemed like the Configure Email Settings page should have a dedicated way to test sending
This commit is contained in:
parent
05bb3849a2
commit
de13e48aa5
|
@ -26,30 +26,72 @@
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
% if request.has_perm('errors.bogus'):
|
<h3 class="block is-size-3">Testing</h3>
|
||||||
<h3 class="block is-size-3">Testing</h3>
|
<div class="block" style="padding-left: 2rem;">
|
||||||
<div class="block" style="padding-left: 2rem;">
|
|
||||||
|
|
||||||
<b-field grouped>
|
<b-field grouped>
|
||||||
<p class="control">
|
<b-field horizontal label="Recipient">
|
||||||
You can raise a "bogus" error to test if/how it generates email:
|
<b-input v-model="testRecipient"></b-input>
|
||||||
</p>
|
</b-field>
|
||||||
|
<b-button type="is-primary"
|
||||||
|
@click="sendTest()"
|
||||||
|
:disabled="sendingTest">
|
||||||
|
{{ sendingTest ? "Working, please wait..." : "Send Test Email" }}
|
||||||
|
</b-button>
|
||||||
|
</b-field>
|
||||||
|
|
||||||
|
<div class="level">
|
||||||
|
<div class="level-left">
|
||||||
|
<div class="level-item">
|
||||||
|
<p>You can raise a "bogus" error to test if/how that generates email:</p>
|
||||||
|
</div>
|
||||||
|
<div class="level-item">
|
||||||
<b-button type="is-primary"
|
<b-button type="is-primary"
|
||||||
|
% if request.has_perm('errors.bogus'):
|
||||||
@click="raiseBogusError()"
|
@click="raiseBogusError()"
|
||||||
:disabled="raisingBogusError">
|
:disabled="raisingBogusError"
|
||||||
|
% else:
|
||||||
|
disabled
|
||||||
|
title="your permissions do not allow this"
|
||||||
|
% endif
|
||||||
|
>
|
||||||
|
% if request.has_perm('errors.bogus'):
|
||||||
{{ raisingBogusError ? "Working, please wait..." : "Raise Bogus Error" }}
|
{{ raisingBogusError ? "Working, please wait..." : "Raise Bogus Error" }}
|
||||||
|
% else:
|
||||||
|
Raise Bogus Error
|
||||||
|
% endif
|
||||||
</b-button>
|
</b-button>
|
||||||
</b-field>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</h3>
|
</div>
|
||||||
% endif
|
|
||||||
|
</div>
|
||||||
</%def>
|
</%def>
|
||||||
|
|
||||||
<%def name="modify_this_page_vars()">
|
<%def name="modify_this_page_vars()">
|
||||||
${parent.modify_this_page_vars()}
|
${parent.modify_this_page_vars()}
|
||||||
% if request.has_perm('errors.bogus'):
|
<script type="text/javascript">
|
||||||
<script type="text/javascript">
|
|
||||||
|
ThisPageData.testRecipient = ${json.dumps(request.user.email_address)|n}
|
||||||
|
ThisPageData.sendingTest = false
|
||||||
|
|
||||||
|
ThisPage.methods.sendTest = function() {
|
||||||
|
this.sendingTest = true
|
||||||
|
let url = '${url('emailprofiles.send_test')}'
|
||||||
|
let params = {recipient: this.testRecipient}
|
||||||
|
this.simplePOST(url, params, response => {
|
||||||
|
this.$buefy.toast.open({
|
||||||
|
message: "Test email was sent!",
|
||||||
|
type: 'is-success',
|
||||||
|
duration: 4000, // 4 seconds
|
||||||
|
})
|
||||||
|
this.sendingTest = false
|
||||||
|
}, response => {
|
||||||
|
this.sendingTest = false
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
% if request.has_perm('errors.bogus'):
|
||||||
|
|
||||||
ThisPageData.raisingBogusError = false
|
ThisPageData.raisingBogusError = false
|
||||||
|
|
||||||
|
@ -74,8 +116,8 @@
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
</script>
|
% endif
|
||||||
% endif
|
</script>
|
||||||
</%def>
|
</%def>
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -297,6 +297,22 @@ class EmailSettingView(MasterView):
|
||||||
'true' if data['hidden'] else 'false')
|
'true' if data['hidden'] else 'false')
|
||||||
return {'ok': True}
|
return {'ok': True}
|
||||||
|
|
||||||
|
def send_test(self):
|
||||||
|
"""
|
||||||
|
AJAX view for sending a test email.
|
||||||
|
"""
|
||||||
|
data = self.request.json_body
|
||||||
|
|
||||||
|
recip = data.get('recipient')
|
||||||
|
if not recip:
|
||||||
|
return {'error': "Must specify recipient"}
|
||||||
|
|
||||||
|
app = self.get_rattail_app()
|
||||||
|
app.send_email('hello', to=[recip], cc=None, bcc=None,
|
||||||
|
default_subject="Hello world")
|
||||||
|
|
||||||
|
return {'ok': True}
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def defaults(cls, config):
|
def defaults(cls, config):
|
||||||
cls._email_defaults(config)
|
cls._email_defaults(config)
|
||||||
|
@ -318,6 +334,16 @@ class EmailSettingView(MasterView):
|
||||||
permission='{}.configure'.format(permission_prefix),
|
permission='{}.configure'.format(permission_prefix),
|
||||||
renderer='json')
|
renderer='json')
|
||||||
|
|
||||||
|
# send test
|
||||||
|
config.add_route('{}.send_test'.format(route_prefix),
|
||||||
|
'{}/send-test'.format(url_prefix),
|
||||||
|
request_method='POST')
|
||||||
|
config.add_view(cls, attr='send_test',
|
||||||
|
route_name='{}.send_test'.format(route_prefix),
|
||||||
|
permission='{}.configure'.format(permission_prefix),
|
||||||
|
renderer='json')
|
||||||
|
|
||||||
|
|
||||||
# TODO: deprecate / remove this
|
# TODO: deprecate / remove this
|
||||||
ProfilesView = EmailSettingView
|
ProfilesView = EmailSettingView
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue