mirror of
https://github.com/jwinterm/modoboa.git
synced 2026-10-17 05:41:25 +02:00
Added new extension parameters
This commit is contained in:
@@ -8,6 +8,21 @@ from rest_framework import serializers
|
||||
from modoboa.postfix_autoreply import models
|
||||
|
||||
|
||||
class PostfixAutoreplySettingsSerializer(serializers.Serializer):
|
||||
"""A serializer for global parameters."""
|
||||
|
||||
# General
|
||||
autoreplies_timeout = serializers.IntegerField(default=86400)
|
||||
default_subject = serializers.CharField(default="I'm off")
|
||||
default_content = serializers.CharField(
|
||||
default="""I'm currently off. I'll answer as soon as I come back.
|
||||
|
||||
Best regards,
|
||||
%(name)s
|
||||
"""
|
||||
)
|
||||
|
||||
|
||||
class ARMessageSerializer(serializers.ModelSerializer):
|
||||
"""A serializer for ARmessage."""
|
||||
|
||||
|
||||
@@ -0,0 +1,49 @@
|
||||
"""Postfix autoreply forms."""
|
||||
|
||||
import collections
|
||||
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
POSTFIX_AUTOREPLY_PARAMETERS_STRUCT = collections.OrderedDict(
|
||||
[
|
||||
(
|
||||
"general",
|
||||
{
|
||||
"label": _("General"),
|
||||
"params": collections.OrderedDict(
|
||||
[
|
||||
(
|
||||
"autoreplies_timeout",
|
||||
{
|
||||
"label": _("Automatic reply timeout"),
|
||||
"help_text": _(
|
||||
"Timeout in seconds between two auto-replies to the same recipient"
|
||||
),
|
||||
},
|
||||
),
|
||||
(
|
||||
"default_subject",
|
||||
{
|
||||
"label": _("Default subject"),
|
||||
"help_text": _(
|
||||
"Default subject used when an auto-reply message is created automatically"
|
||||
),
|
||||
},
|
||||
),
|
||||
(
|
||||
"default_content",
|
||||
{
|
||||
"label": _("Default subject"),
|
||||
"help_text": _(
|
||||
"Default content used when an auto-reply message is created "
|
||||
"automatically. The '%(name)s' macro will be replaced by the "
|
||||
"user's full name."
|
||||
),
|
||||
},
|
||||
),
|
||||
]
|
||||
),
|
||||
},
|
||||
),
|
||||
]
|
||||
)
|
||||
@@ -7,11 +7,22 @@ from django.utils.translation import gettext_lazy
|
||||
def load_settings():
|
||||
from modoboa.parameters import tools as param_tools
|
||||
from modoboa.postfix_autoreply import forms
|
||||
from . import app_settings
|
||||
from .api.v2 import serializers
|
||||
|
||||
param_tools.registry.add(
|
||||
"global", forms.ParametersForm, gettext_lazy("Automatic replies")
|
||||
)
|
||||
|
||||
param_tools.registry.add2(
|
||||
"global",
|
||||
"postfix_autoreply",
|
||||
gettext_lazy("Automatic replies"),
|
||||
app_settings.POSTFIX_AUTOREPLY_PARAMETERS_STRUCT,
|
||||
serializers.PostfixAutoreplySettingsSerializer,
|
||||
False,
|
||||
)
|
||||
|
||||
|
||||
class PostfixAutoreplyConfig(AppConfig):
|
||||
"""App configuration."""
|
||||
|
||||
@@ -10,17 +10,38 @@ from django.utils.translation import gettext as _
|
||||
from rest_framework import serializers
|
||||
|
||||
from modoboa.sievefilters import constants, lib
|
||||
from modoboa.sievefilters.forms import supported_auth_mechs
|
||||
from modoboa.sievefilters.api.v2 import vloaders
|
||||
|
||||
|
||||
class FilterSetSerializer(serializers.Serializer):
|
||||
class SievefiltersSettingsSerializer(serializers.Serializer):
|
||||
"""A serializer for global parameters."""
|
||||
|
||||
# ManageSieve settings
|
||||
|
||||
server = serializers.CharField(default="127.0.0.1")
|
||||
port = serializers.IntegerField(default=4190)
|
||||
starttls = serializers.BooleanField(default=False)
|
||||
authentication_mech = serializers.ChoiceField(
|
||||
default="auto", choices=[("auto", _("auto"))]
|
||||
)
|
||||
|
||||
# Imap Settings
|
||||
imap_server = serializers.CharField(default="127.0.0.1")
|
||||
imap_secured = serializers.BooleanField(default=False)
|
||||
imap_port = serializers.IntegerField(default=143)
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs)
|
||||
self.fields["authentication_mech"].choices = supported_auth_mechs()
|
||||
|
||||
|
||||
class FilterSetSerializer(serializers.Serializer):
|
||||
name = serializers.CharField()
|
||||
active = serializers.BooleanField(default=False)
|
||||
|
||||
|
||||
class FilterSetContentSerializer(serializers.Serializer):
|
||||
|
||||
content = serializers.CharField()
|
||||
|
||||
def validate_content(self, value: str):
|
||||
@@ -32,20 +53,17 @@ class FilterSetContentSerializer(serializers.Serializer):
|
||||
|
||||
|
||||
class ConditionSerializer(serializers.Serializer):
|
||||
|
||||
name = serializers.CharField()
|
||||
operator = serializers.CharField()
|
||||
value = serializers.CharField()
|
||||
|
||||
|
||||
class ActionSerializer(serializers.Serializer):
|
||||
|
||||
name = serializers.CharField()
|
||||
args = serializers.DictField(child=serializers.CharField())
|
||||
|
||||
|
||||
class FilterSerializer(serializers.Serializer):
|
||||
|
||||
name = serializers.CharField()
|
||||
enabled = serializers.BooleanField(default=True)
|
||||
match_type = serializers.ChoiceField(choices=constants.MATCH_TYPES)
|
||||
@@ -134,21 +152,18 @@ class FilterSerializer(serializers.Serializer):
|
||||
|
||||
|
||||
class OperatorSerializer(serializers.Serializer):
|
||||
|
||||
name = serializers.CharField()
|
||||
label = serializers.CharField()
|
||||
type = serializers.CharField()
|
||||
|
||||
|
||||
class ConditionTemplateSerializer(serializers.Serializer):
|
||||
|
||||
name = serializers.CharField()
|
||||
label = serializers.CharField()
|
||||
operators = OperatorSerializer(many=True)
|
||||
|
||||
|
||||
class ActionArgumentSerializer(serializers.Serializer):
|
||||
|
||||
name = serializers.CharField()
|
||||
type = serializers.CharField()
|
||||
label = serializers.CharField(required=False)
|
||||
@@ -163,7 +178,6 @@ class ActionArgumentSerializer(serializers.Serializer):
|
||||
|
||||
|
||||
class ActionTemplateSerializer(serializers.Serializer):
|
||||
|
||||
name = serializers.CharField()
|
||||
label = serializers.CharField()
|
||||
args = ActionArgumentSerializer(many=True, required=False)
|
||||
|
||||
@@ -0,0 +1,83 @@
|
||||
"""Sieve filters forms."""
|
||||
|
||||
import collections
|
||||
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
SIEVEFILTERS_PARAMETERS_STRUCT = collections.OrderedDict(
|
||||
[
|
||||
(
|
||||
"manage_sieve_settings",
|
||||
{
|
||||
"label": _("ManageSieve settings"),
|
||||
"params": collections.OrderedDict(
|
||||
[
|
||||
(
|
||||
"server",
|
||||
{
|
||||
"label": _("Server address"),
|
||||
"help_text": _("Address of your MANAGESIEVE server"),
|
||||
},
|
||||
),
|
||||
(
|
||||
"port",
|
||||
{
|
||||
"label": _("Server port"),
|
||||
"help_text": _(
|
||||
"Listening port of your MANAGESIEVE server"
|
||||
),
|
||||
},
|
||||
),
|
||||
(
|
||||
"starttls",
|
||||
{
|
||||
"label": _("Connect using STARTTLS"),
|
||||
"help_text": _("Use the STARTTLS extension"),
|
||||
},
|
||||
),
|
||||
(
|
||||
"authentication_mech",
|
||||
{
|
||||
"label": _("Authentication mechanism"),
|
||||
"help_text": _("Prefered authentication mechanism"),
|
||||
},
|
||||
),
|
||||
]
|
||||
),
|
||||
},
|
||||
),
|
||||
(
|
||||
"imap_settings",
|
||||
{
|
||||
"label": _("IMAP settings"),
|
||||
"params": collections.OrderedDict(
|
||||
[
|
||||
(
|
||||
"imap_server",
|
||||
{
|
||||
"label": _("Server address"),
|
||||
"help_text": _("Address of your IMAP server"),
|
||||
},
|
||||
),
|
||||
(
|
||||
"imap_secured",
|
||||
{
|
||||
"label": _("Use a secured connection"),
|
||||
"help_text": _(
|
||||
"Use a secured connection to access IMAP server"
|
||||
),
|
||||
},
|
||||
),
|
||||
(
|
||||
"imap_port",
|
||||
{
|
||||
"label": _("Server port"),
|
||||
"help_text": _("Listening port of your IMAP server"),
|
||||
},
|
||||
),
|
||||
]
|
||||
),
|
||||
},
|
||||
),
|
||||
]
|
||||
)
|
||||
@@ -7,10 +7,23 @@ from django.utils.translation import gettext_lazy
|
||||
def load_settings():
|
||||
from modoboa.parameters import tools as param_tools
|
||||
from modoboa.sievefilters import forms
|
||||
from . import app_settings
|
||||
from .api.v2 import serializers
|
||||
|
||||
# Admin parameters
|
||||
param_tools.registry.add(
|
||||
"global", forms.ParametersForm, gettext_lazy("Sieve filters")
|
||||
)
|
||||
param_tools.registry.add2(
|
||||
"global",
|
||||
"sievefilters",
|
||||
gettext_lazy("Sieve filters"),
|
||||
app_settings.SIEVEFILTERS_PARAMETERS_STRUCT,
|
||||
serializers.SievefiltersSettingsSerializer,
|
||||
False,
|
||||
)
|
||||
|
||||
# User parameters
|
||||
param_tools.registry.add(
|
||||
"user", forms.UserSettings, gettext_lazy("Message filters")
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user