diff --git a/admin/freeposte/admin/forms.py b/admin/freeposte/admin/forms.py
index 4e969207..3adc0c02 100644
--- a/admin/freeposte/admin/forms.py
+++ b/admin/freeposte/admin/forms.py
@@ -27,6 +27,8 @@ class UserForm(Form):
pw = fields.PasswordField('Password', [validators.DataRequired()])
pw2 = fields.PasswordField('Confirm password', [validators.EqualTo('pw')])
quota_bytes = fields_.DecimalSliderField('Quota', default=1000000000)
+ enable_imap = fields.BooleanField('Allow IMAP access', default=True)
+ enable_pop = fields.BooleanField('Allow POP3 access', default=True)
comment = fields.StringField('Comment')
submit = fields.SubmitField('Save')
diff --git a/admin/freeposte/admin/models.py b/admin/freeposte/admin/models.py
index 5bbe7b1c..92492c48 100644
--- a/admin/freeposte/admin/models.py
+++ b/admin/freeposte/admin/models.py
@@ -83,6 +83,10 @@ class User(Address):
quota_bytes = db.Column(db.Integer(), nullable=False, default=10**9)
global_admin = db.Column(db.Boolean(), nullable=False, default=False)
+ # Features
+ enable_imap = db.Column(db.Boolean(), nullable=False, default=True)
+ enable_pop = db.Column(db.Boolean(), nullable=False, default=True)
+
# Filters
forward = db.Column(db.String(160), nullable=True, default=None)
reply_subject = db.Column(db.String(255), nullable=True, default=None)
diff --git a/admin/freeposte/admin/templates/macros.html b/admin/freeposte/admin/templates/macros.html
index 5ce402cf..61c797c5 100644
--- a/admin/freeposte/admin/templates/macros.html
+++ b/admin/freeposte/admin/templates/macros.html
@@ -10,34 +10,42 @@
{% endif %}
{% endmacro %}
+{% macro form_field_errors(field) %}
+ {% if field.errors %}
+ {% for error in field.errors %}
+
{{ error }}
+ {% endfor %}
+ {% endif %}
+{% endmacro %}
+
{% macro form_fields(fields, prepend='', append='', label=True) %}
{% set width = (12 / fields|length)|int %}
{% endmacro %}
+{% macro form_individual_field(field, prepend='', append='', label=True) %}
+ {% if field.type == "BooleanField" %}
+ {{ field(**kwargs) }}
+ {{ field.label if label else '' }}
+ {% else %}
+ {{ field.label if label else '' }}{{ form_field_errors(field) }}
+ {% if prepend or append %}{% endif %}
+ {{ prepend|safe }}{{ field(class_="form-control", **kwargs) }}{{ append|safe }}
+ {% if prepend or append %}
{% endif %}
+ {% endif %}
+{% endmacro %}
+
{% macro form_field(field) %}
{% if field.type == 'SubmitField' %}
{{ form_fields((field,), label=False, class="btn btn-default", **kwargs) }}
- {% elif field.type == 'HiddenField' %}
- {{ form_fields((field,), label=False, **kwargs) }}
{% else %}
{{ form_fields((field,), **kwargs) }}
{% endif %}
diff --git a/admin/freeposte/admin/templates/user/create.html b/admin/freeposte/admin/templates/user/create.html
index e1533a1a..177bb148 100644
--- a/admin/freeposte/admin/templates/user/create.html
+++ b/admin/freeposte/admin/templates/user/create.html
@@ -16,6 +16,8 @@ New user
{{ macros.form_field(form.quota_bytes, step=1000000000, max=50000000000,
prepend=''+(form.quota_bytes.data//1000000000).__str__()+' GiB',
oninput='$("#quota").text(this.value/1000000000);') }}
+ {{ macros.form_field(form.enable_imap) }}
+ {{ macros.form_field(form.enable_pop) }}
{{ macros.form_field(form.comment) }}
{{ macros.form_field(form.submit) }}
diff --git a/admin/freeposte/admin/templates/user/list.html b/admin/freeposte/admin/templates/user/list.html
index 0228aa7f..835c80c8 100644
--- a/admin/freeposte/admin/templates/user/list.html
+++ b/admin/freeposte/admin/templates/user/list.html
@@ -18,9 +18,7 @@ User list
Actions |
Address |
- Name |
- Forward |
- Reply |
+ Features |
Quota |
Comment |
Created |
@@ -38,11 +36,12 @@ User list
{{ user }} |
- {{ user.displayed_name }} |
- {% if user.forward %}enabled{% endif %} |
- {% if user.reply_subject %}enabled{% endif %} |
+
+ {% if user.enable_imap %}imap{% endif %}
+ {% if user.enable_pop %}pop3{% endif %}
+ |
{{ user.quota_bytes | filesizeformat }} |
- {{ user.comment or '' }} |
+ {{ user.comment or '-' }} |
{{ user.created_at }} |
{{ user.updated_at or '' }} |