emails: allow user to define email sender name (#44411)
This commit is contained in:
parent
b314c1f9a8
commit
02052aff40
|
@ -28,7 +28,10 @@ class ValidEmailField(forms.EmailField):
|
|||
|
||||
|
||||
class EmailsForm(forms.Form):
|
||||
default_from_email = ValidEmailField(label=_('Default From'))
|
||||
default_from_email = ValidEmailField(label=_('Default From'),
|
||||
help_text=_('Sender email address'))
|
||||
email_sender_name = forms.CharField(label=_('Sender Name'), required=False,
|
||||
help_text=_('Custom sender name (defaults to global title)'))
|
||||
global_email_prefix = forms.CharField(label=_('Prefix'), required=False,
|
||||
help_text=_('Custom prefix for emails subject (defaults to global title)'))
|
||||
email_signature = forms.CharField(label=_('Signature'), required=False,
|
||||
|
|
|
@ -24,7 +24,7 @@ from .forms import EmailsForm
|
|||
|
||||
class HomeView(VariablesFormMixin, TemplateView):
|
||||
template_name = 'hobo/emails_home.html'
|
||||
variables = ['default_from_email', 'global_email_prefix', 'email_signature']
|
||||
variables = ['default_from_email', 'email_sender_name', 'global_email_prefix', 'email_signature']
|
||||
form_class = EmailsForm
|
||||
success_message = _('Emails settings have been updated. '
|
||||
'It will take a few seconds to be effective.')
|
||||
|
|
|
@ -47,6 +47,7 @@ AUTO_VARIABLES = (
|
|||
'default_from_email',
|
||||
'global_email_prefix',
|
||||
'email_signature',
|
||||
'email_sender_name',
|
||||
'global_title',
|
||||
'robots_txt',
|
||||
'meta_description',
|
||||
|
|
|
@ -183,9 +183,10 @@ class TemplateVars(FileBaseSettingsLoader):
|
|||
tenant_settings.TEMPLATE_VARS[key] = value
|
||||
|
||||
if variables.get('default_from_email'):
|
||||
if variables.get('global_title'):
|
||||
from_label = variables.get('email_sender_name') or variables.get('global_title')
|
||||
if from_label:
|
||||
tenant_settings.DEFAULT_FROM_EMAIL = '"%s" <%s>' % (
|
||||
variables['global_title'].replace('"', ' '), variables['default_from_email'])
|
||||
from_label.replace('"', ' '), variables['default_from_email'])
|
||||
else:
|
||||
tenant_settings.DEFAULT_FROM_EMAIL = variables['default_from_email']
|
||||
|
||||
|
|
|
@ -186,7 +186,9 @@ def test_emails_view(app, admin_user, dns_resolver, smtp_server, settings):
|
|||
resp.form['default_from_email'] = 'john.doe@example.com'
|
||||
resp.form['email_signature'] = 'my signature'
|
||||
resp.form['global_email_prefix'] = 'my prefix'
|
||||
resp.form['email_sender_name'] = 'my name'
|
||||
resp = resp.form.submit()
|
||||
assert Variable.objects.filter(name='default_from_email')[0].value == 'john.doe@example.com'
|
||||
assert Variable.objects.filter(name='email_signature')[0].value == 'my signature'
|
||||
assert Variable.objects.filter(name='global_email_prefix')[0].value == 'my prefix'
|
||||
assert Variable.objects.filter(name='email_sender_name')[0].value == 'my name'
|
||||
|
|
|
@ -7,7 +7,7 @@ from django.conf import UserSettingsHolder
|
|||
from hobo.deploy.utils import get_hobo_json
|
||||
from hobo.environment.models import Authentic, Combo
|
||||
from hobo.multitenant.settings_loaders import Authentic as AuthenticLoader
|
||||
from hobo.multitenant.settings_loaders import BackofficeLoginHint
|
||||
from hobo.multitenant.settings_loaders import BackofficeLoginHint, TemplateVars
|
||||
from hobo.profile.models import AttributeDefinition
|
||||
|
||||
pytestmark = pytest.mark.django_db
|
||||
|
@ -98,3 +98,35 @@ def test_mellon_always_backoffice_login_hint_setting_from_path(tmpdir):
|
|||
loader = BackofficeLoginHint()
|
||||
loader.update_settings_from_path(tenant_settings, path)
|
||||
assert tenant_settings.MELLON_LOGIN_HINTS == ['always_backoffice']
|
||||
|
||||
|
||||
def test_email_update_settings_from_path(tmpdir):
|
||||
tenant_settings = UserSettingsHolder({})
|
||||
loader = TemplateVars()
|
||||
|
||||
def update_settings(env):
|
||||
path = os.path.join(str(tmpdir), 'hobo.json')
|
||||
json.dump(env, open(path, 'w'))
|
||||
loader.update_settings_from_path(tenant_settings, path)
|
||||
|
||||
tenant_settings.DEFAULT_FROM_EMAIL = 'webmaster@hobo.example.org'
|
||||
env = {'services': [], 'variables': {}}
|
||||
update_settings(env)
|
||||
assert tenant_settings.DEFAULT_FROM_EMAIL == 'webmaster@hobo.example.org'
|
||||
env['variables']['default_from_email'] = 'john.doe@example.com'
|
||||
update_settings(env)
|
||||
assert tenant_settings.DEFAULT_FROM_EMAIL == 'john.doe@example.com'
|
||||
env['variables']['global_title'] = 'Publik'
|
||||
update_settings(env)
|
||||
assert tenant_settings.DEFAULT_FROM_EMAIL == '"Publik" <john.doe@example.com>'
|
||||
env['variables']['email_sender_name'] = 'Jhon Doe'
|
||||
update_settings(env)
|
||||
assert tenant_settings.DEFAULT_FROM_EMAIL == '"Jhon Doe" <john.doe@example.com>'
|
||||
env['variables']['default_from_email'] = 'foo@example.com'
|
||||
update_settings(env)
|
||||
assert tenant_settings.DEFAULT_FROM_EMAIL == '"Jhon Doe" <foo@example.com>'
|
||||
|
||||
# default_from_email needed for '"foo" <bar.example.com>' address format
|
||||
tenant_settings.DEFAULT_FROM_EMAIL = '<webmaster@hobo.example.org>'
|
||||
update_settings({'services': [], 'variables': {'global_title': 'Publik'}})
|
||||
assert tenant_settings.DEFAULT_FROM_EMAIL == '<webmaster@hobo.example.org>'
|
||||
|
|
Loading…
Reference in New Issue