[#8191] change html-ony email_format to multipart text + html
diff --git a/Allura/allura/lib/plugin.py b/Allura/allura/lib/plugin.py
index 34fe57a..f7b6fed 100644
--- a/Allura/allura/lib/plugin.py
+++ b/Allura/allura/lib/plugin.py
@@ -1499,14 +1499,20 @@
def get_pref(self, user, pref_name):
if pref_name in user.preferences:
- return user.preferences[pref_name]
+ pref_value = user.preferences[pref_name]
elif pref_name == 'display_name':
# get the value directly from ming's internals, bypassing
# FieldPropertyDisplayName which always calls back to this get_pref
# method (infinite recursion)
- return user.__dict__['__ming__'].state.document.display_name
+ pref_value = user.__dict__['__ming__'].state.document.display_name
else:
- return getattr(user, pref_name)
+ pref_value = getattr(user, pref_name)
+
+ if pref_name == 'email_format' and pref_value == 'html':
+ # html-only is no longer supported
+ pref_value = 'both'
+
+ return pref_value
def set_pref(self, user, pref_name, pref_value):
if pref_name == 'display_name' and asbool(config.get('activitystream.recording.enabled', False)):
diff --git a/Allura/allura/lib/widgets/subscriptions.py b/Allura/allura/lib/widgets/subscriptions.py
index 2409d68..142463d 100644
--- a/Allura/allura/lib/widgets/subscriptions.py
+++ b/Allura/allura/lib/widgets/subscriptions.py
@@ -66,8 +66,7 @@
show_label=False,
options=[
ew.Option(py_value='plain', label='Plain Text'),
- ew.Option(py_value='html', label='HTML'),
- ew.Option(py_value='both', label='Combined')]),
+ ew.Option(py_value='both', label='HTML')]),
]
diff --git a/Allura/allura/tasks/mail_tasks.py b/Allura/allura/tasks/mail_tasks.py
index a5af0a6..938f358 100644
--- a/Allura/allura/tasks/mail_tasks.py
+++ b/Allura/allura/tasks/mail_tasks.py
@@ -134,7 +134,7 @@
html_msg = mail_util.encode_email_part(html_text, 'html')
multi_msg = mail_util.make_multipart_message(plain_msg, html_msg)
- return multi_msg, html_msg, plain_msg
+ return multi_msg, plain_msg
@task
@@ -149,7 +149,6 @@
'''
from allura import model as M
addrs_plain = []
- addrs_html = []
addrs_multi = []
if fromaddr is None:
fromaddr = g.noreply
@@ -187,21 +186,16 @@
continue
if user.get_pref('email_format') == 'plain':
addrs_plain.append(addr)
- elif user.get_pref('email_format') == 'html':
- addrs_html.append(addr)
else:
addrs_multi.append(addr)
- multi_msg, html_msg, plain_msg = create_multipart_msg(text, metalink)
+ multi_msg, plain_msg = create_multipart_msg(text, metalink)
smtp_client.sendmail(
addrs_multi, fromaddr, reply_to, subject, message_id,
in_reply_to, multi_msg, sender=sender, references=references)
smtp_client.sendmail(
addrs_plain, fromaddr, reply_to, subject, message_id,
in_reply_to, plain_msg, sender=sender, references=references)
- smtp_client.sendmail(
- addrs_html, fromaddr, reply_to, subject, message_id,
- in_reply_to, html_msg, sender=sender, references=references)
@task
@@ -245,7 +239,7 @@
else:
toaddr = user.email_address_header()
- multi_msg, html_msg, plain_msg = create_multipart_msg(text)
+ multi_msg, plain_msg = create_multipart_msg(text)
smtp_client.sendmail(
[toaddr], fromaddr, reply_to, subject, message_id,
in_reply_to, multi_msg, sender=sender, references=references, cc=cc, to=toaddr)
diff --git a/Allura/allura/templates/user_subs.html b/Allura/allura/templates/user_subs.html
index 15f3a7c..b49e85c 100644
--- a/Allura/allura/templates/user_subs.html
+++ b/Allura/allura/templates/user_subs.html
@@ -29,7 +29,7 @@
{% if subscriptions %}
<p><em>Mark tools that you want to subscribe to. Unmark tools that you want to unsubscribe from. Press 'Save' button.</em></p>
<div class="grid-24">
- {{c.form.display(action='update_subscriptions', value=dict(subscriptions=subscriptions, email_format=c.user.preferences.email_format))}}
+ {{c.form.display(action='update_subscriptions', value=dict(subscriptions=subscriptions, email_format=c.user.get_pref('email_format')))}}
</div>
{% else%}
<p>No subscriptions.</p>
diff --git a/Allura/allura/tests/functional/test_auth.py b/Allura/allura/tests/functional/test_auth.py
index 59c9428..739dbae 100644
--- a/Allura/allura/tests/functional/test_auth.py
+++ b/Allura/allura/tests/functional/test_auth.py
@@ -736,11 +736,6 @@
def test_format_email(self):
self.app.get('/') # establish session
self.app.post('/auth/subscriptions/update_subscriptions',
- params={'email_format': 'html', 'subscriptions': '',
- '_session_id': self.app.cookies['_session_id']})
- r = self.app.get('/auth/subscriptions/')
- assert '<option selected value="html">HTML</option>' in r
- self.app.post('/auth/subscriptions/update_subscriptions',
params={'email_format': 'plain', 'subscriptions': '',
'_session_id': self.app.cookies['_session_id']})
r = self.app.get('/auth/subscriptions/')
@@ -749,7 +744,7 @@
params={'email_format': 'both', 'subscriptions': '',
'_session_id': self.app.cookies['_session_id']})
r = self.app.get('/auth/subscriptions/')
- assert '<option selected value="both">Combined</option>' in r
+ assert '<option selected value="both">HTML</option>' in r
def test_create_account(self):
r = self.app.get('/auth/create_account')
diff --git a/ForgeGit/forgegit/tests/model/test_repository.py b/ForgeGit/forgegit/tests/model/test_repository.py
index bc89736..9412cb4 100644
--- a/ForgeGit/forgegit/tests/model/test_repository.py
+++ b/ForgeGit/forgegit/tests/model/test_repository.py
@@ -23,6 +23,7 @@
import unittest
import pkg_resources
import datetime
+import email.iterators
import mock
from pylons import tmpl_context as c, app_globals as g
@@ -451,10 +452,11 @@
with mock.patch('allura.tasks.mail_tasks.smtp_client.sendmail') as sendmail:
while M.MonQTask.run_ready(): # have to run them all multiple times since one task creates another
pass
+ multipart_msg = sendmail.call_args_list[0][0][6]
text_msg = sendmail.call_args_list[1][0][6]
- html_msg = sendmail.call_args_list[2][0][6]
text_body = text_msg.get_payload(decode=True)
- html_body = html_msg.get_payload(decode=True)
+ html_body = email.iterators.typed_subpart_iterator(multipart_msg, 'text', 'html').next()\
+ .get_payload(decode=True)
# no extra HTML in commit messages
assert_in('''-----