forked from CGM_Public/pretix_original
Mail signature (#485)
* added signature field -- no function yet * added mail signature feature * fixed style issue * fixed problem with signature default * added unit test for mail signatures * added unit test for mail signatures
This commit is contained in:
@@ -114,6 +114,16 @@ def mail(email: str, subject: str, template: Union[str, LazyI18nString],
|
|||||||
subject = "[%s] %s" % (prefix, subject)
|
subject = "[%s] %s" % (prefix, subject)
|
||||||
|
|
||||||
body_plain += "\r\n\r\n-- \r\n"
|
body_plain += "\r\n\r\n-- \r\n"
|
||||||
|
|
||||||
|
signature = str(event.settings.get('mail_text_signature'))
|
||||||
|
if signature:
|
||||||
|
signature = signature.format(event=event.name)
|
||||||
|
signature_md = signature.replace('\n', '<br>\n')
|
||||||
|
signature_md = bleach.linkify(bleach.clean(markdown.markdown(signature_md), tags=bleach.ALLOWED_TAGS + ['p', 'br']))
|
||||||
|
htmlctx['signature'] = signature_md
|
||||||
|
body_plain += signature
|
||||||
|
body_plain += "\r\n\r\n-- \r\n"
|
||||||
|
|
||||||
body_plain += _(
|
body_plain += _(
|
||||||
"You are receiving this email because you placed an order for {event}."
|
"You are receiving this email because you placed an order for {event}."
|
||||||
).format(event=event.name)
|
).format(event=event.name)
|
||||||
|
|||||||
@@ -191,6 +191,10 @@ DEFAULTS = {
|
|||||||
'default': settings.MAIL_FROM,
|
'default': settings.MAIL_FROM,
|
||||||
'type': str
|
'type': str
|
||||||
},
|
},
|
||||||
|
'mail_text_signature': {
|
||||||
|
'type': LazyI18nString,
|
||||||
|
'default': ""
|
||||||
|
},
|
||||||
'mail_text_resend_link': {
|
'mail_text_resend_link': {
|
||||||
'type': LazyI18nString,
|
'type': LazyI18nString,
|
||||||
'default': LazyI18nString.from_gettext(ugettext_noop("""Hello,
|
'default': LazyI18nString.from_gettext(ugettext_noop("""Hello,
|
||||||
|
|||||||
@@ -148,6 +148,18 @@
|
|||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
{% if signature %}
|
||||||
|
<tr>
|
||||||
|
<td class="gap"></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="order containertd">
|
||||||
|
<div class="content">
|
||||||
|
{{ signature | safe }}
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{% endif %}
|
||||||
<tr>
|
<tr>
|
||||||
<td class="footer">
|
<td class="footer">
|
||||||
<div>
|
<div>
|
||||||
|
|||||||
@@ -474,6 +474,15 @@ class MailSettingsForm(SettingsForm):
|
|||||||
label=_("Sender address"),
|
label=_("Sender address"),
|
||||||
help_text=_("Sender address for outgoing emails")
|
help_text=_("Sender address for outgoing emails")
|
||||||
)
|
)
|
||||||
|
|
||||||
|
mail_text_signature = I18nFormField(
|
||||||
|
label=_("Signature"),
|
||||||
|
required=False,
|
||||||
|
widget=I18nTextarea,
|
||||||
|
help_text=_("This will be attached to every email. Available placeholders: {event}"),
|
||||||
|
validators=[PlaceholderValidator(['{event}'])]
|
||||||
|
)
|
||||||
|
|
||||||
mail_text_order_placed = I18nFormField(
|
mail_text_order_placed = I18nFormField(
|
||||||
label=_("Text"),
|
label=_("Text"),
|
||||||
required=False,
|
required=False,
|
||||||
|
|||||||
@@ -10,6 +10,7 @@
|
|||||||
<legend>{% trans "E-mail settings" %}</legend>
|
<legend>{% trans "E-mail settings" %}</legend>
|
||||||
{% bootstrap_field form.mail_prefix layout="horizontal" %}
|
{% bootstrap_field form.mail_prefix layout="horizontal" %}
|
||||||
{% bootstrap_field form.mail_from layout="horizontal" %}
|
{% bootstrap_field form.mail_from layout="horizontal" %}
|
||||||
|
{% bootstrap_field form.mail_text_signature layout="horizontal" %}
|
||||||
</fieldset>
|
</fieldset>
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend>{% trans "E-mail content" %}</legend>
|
<legend>{% trans "E-mail content" %}</legend>
|
||||||
|
|||||||
@@ -48,6 +48,18 @@ def test_send_mail_with_event_sender(env):
|
|||||||
assert djmail.outbox[0].from_email == 'foo@bar'
|
assert djmail.outbox[0].from_email == 'foo@bar'
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.django_db
|
||||||
|
def test_send_mail_with_event_signature(env):
|
||||||
|
djmail.outbox = []
|
||||||
|
event, user, organizer = env
|
||||||
|
event.settings.set('mail_text_signature', 'This is a test signature.')
|
||||||
|
mail('dummy@dummy.dummy', 'Test subject', 'mailtest.txt', {}, event)
|
||||||
|
|
||||||
|
assert len(djmail.outbox) == 1
|
||||||
|
assert djmail.outbox[0].to == [user.email]
|
||||||
|
assert 'This is a test signature.' in djmail.outbox[0].body
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_send_mail_with_default_sender(env):
|
def test_send_mail_with_default_sender(env):
|
||||||
djmail.outbox = []
|
djmail.outbox = []
|
||||||
|
|||||||
Reference in New Issue
Block a user