diff --git a/core/admin/mailu/ui/forms.py b/core/admin/mailu/ui/forms.py
index f6d03fc2..fa81adc3 100644
--- a/core/admin/mailu/ui/forms.py
+++ b/core/admin/mailu/ui/forms.py
@@ -46,7 +46,7 @@ class MultipleFoldersVerify(object):
self.message = message
def __call__(self, form, field):
- pattern = re.compile(r'^\w+(,\w+)*$')
+ pattern = re.compile(r'^\w+(\s*,\s*\w+)*$')
if not pattern.match(field.data.replace(" ", "")):
raise validators.ValidationError(self.message)
diff --git a/core/admin/mailu/ui/templates/fetch/create.html b/core/admin/mailu/ui/templates/fetch/create.html
index a48c1a48..69584d15 100644
--- a/core/admin/mailu/ui/templates/fetch/create.html
+++ b/core/admin/mailu/ui/templates/fetch/create.html
@@ -25,9 +25,7 @@
{%- call macros.card(title="Settings") %}
{{ macros.form_field(form.keep) }}
{{ macros.form_field(form.scan) }}
-{%- block folders %}
{{ macros.form_field(form.folders) }}
-{%- endblock %}
{%- endcall %}
{{ macros.form_field(form.submit) }}
diff --git a/core/admin/mailu/ui/templates/fetch/edit.html b/core/admin/mailu/ui/templates/fetch/edit.html
index c7ff5a87..62af51a9 100644
--- a/core/admin/mailu/ui/templates/fetch/edit.html
+++ b/core/admin/mailu/ui/templates/fetch/edit.html
@@ -7,15 +7,3 @@
{%- block subtitle %}
{{ user }}
{%- endblock %}
-
-{%- block folders %}
-
-{%- endblock %}
diff --git a/core/admin/mailu/ui/views/fetches.py b/core/admin/mailu/ui/views/fetches.py
index 3c03a351..69018ba9 100644
--- a/core/admin/mailu/ui/views/fetches.py
+++ b/core/admin/mailu/ui/views/fetches.py
@@ -1,4 +1,4 @@
-from mailu import models
+from mailu import models, utils
from mailu.ui import ui, forms, access
import flask
@@ -23,6 +23,7 @@ def fetch_create(user_email):
user = models.User.query.get(user_email) or flask.abort(404)
form = forms.FetchForm()
form.password.validators = [wtforms.validators.DataRequired()]
+ utils.formatCSVField(form.folders)
if form.validate_on_submit():
fetch = models.Fetch(user=user)
form.populate_obj(fetch)
@@ -41,6 +42,7 @@ def fetch_create(user_email):
def fetch_edit(fetch_id):
fetch = models.Fetch.query.get(fetch_id) or flask.abort(404)
form = forms.FetchForm(obj=fetch)
+ utils.formatCSVField(form.folders)
if form.validate_on_submit():
if not form.password.data:
form.password.data = fetch.password
diff --git a/core/admin/mailu/ui/views/users.py b/core/admin/mailu/ui/views/users.py
index 85a5c2db..b5e7304c 100644
--- a/core/admin/mailu/ui/views/users.py
+++ b/core/admin/mailu/ui/views/users.py
@@ -99,11 +99,7 @@ def user_settings(user_email):
user_email_or_current = user_email or flask_login.current_user.email
user = models.User.query.get(user_email_or_current) or flask.abort(404)
form = forms.UserSettingsForm(obj=user)
- if isinstance(form.forward_destination.data,str):
- data = form.forward_destination.data.replace(" ","").split(",")
- else:
- data = form.forward_destination.data
- form.forward_destination.data = ", ".join(data)
+ utils.formatCSVField(form.forward_destination)
if form.validate_on_submit():
form.forward_destination.data = form.forward_destination.data.replace(" ","").split(",")
form.populate_obj(user)
diff --git a/core/admin/mailu/utils.py b/core/admin/mailu/utils.py
index f160fe3f..b432192d 100644
--- a/core/admin/mailu/utils.py
+++ b/core/admin/mailu/utils.py
@@ -518,3 +518,10 @@ def isBadOrPwned(form):
if breaches > 0:
return f"This password appears in {breaches} data breaches! It is not unique; please change it."
return None
+
+def formatCSVField(field):
+ if isinstance(field.data,str):
+ data = field.data.replace(" ","").split(",")
+ else:
+ data = field.data
+ field.data = ", ".join(data)