Fix email forwarding when set from the UI

This commit is contained in:
Florent Daigniere
2024-07-28 22:54:55 +02:00
parent d5bee885bf
commit 9120f731fc
2 changed files with 10 additions and 7 deletions

View File

@@ -92,13 +92,15 @@ def user_settings(user_email):
user = models.User.query.get(user_email_or_current) or flask.abort(404) user = models.User.query.get(user_email_or_current) or flask.abort(404)
form = forms.UserSettingsForm(obj=user) form = forms.UserSettingsForm(obj=user)
utils.formatCSVField(form.forward_destination) utils.formatCSVField(form.forward_destination)
form.forward_enabled.data = bool(flask.request.form.get('forward_enabled', False))
if form.validate_on_submit(): if form.validate_on_submit():
if form.forward_enabled.data and (form.forward_destination.data in ['', None] or type(form.forward_destination.data) is list): if form.forward_enabled and (form.forward_destination.data in ['', None] or type(form.forward_destination.data) is list):
flask.flash('Destination email address is missing', 'error') flask.flash('Destination email address is missing', 'error')
user.forward_enabled = True return flask.redirect(
return flask.render_template('user/settings.html', form=form, user=user) flask.url_for('.user_settings', user=user.email))
if form.forward_enabled.data: if not user.forward_enabled and not flask.request.form.get('forward_destination', None):
form.forward_destination.data = form.forward_destination.data.replace(" ","").split(",") form.forward_destination.data = ""
form.forward_destination.data = form.forward_destination.data.replace(" ","").split(",")
form.populate_obj(user) form.populate_obj(user)
models.db.session.commit() models.db.session.commit()
form.forward_destination.data = ", ".join(form.forward_destination.data) form.forward_destination.data = ", ".join(form.forward_destination.data)
@@ -107,8 +109,8 @@ def user_settings(user_email):
return flask.redirect( return flask.redirect(
flask.url_for('.user_list', domain_name=user.domain.name)) flask.url_for('.user_list', domain_name=user.domain.name))
elif form.is_submitted() and not form.validate(): elif form.is_submitted() and not form.validate():
user.forward_enabled = form.forward_enabled.data return flask.redirect(
return flask.render_template('user/settings.html', form=form, user=user) flask.url_for('.user_settings', user=user.email))
return flask.render_template('user/settings.html', form=form, user=user) return flask.render_template('user/settings.html', form=form, user=user)
def _process_password_change(form, user_email): def _process_password_change(form, user_email):

View File

@@ -0,0 +1 @@
Fix email-forwarding when set from the web interface