From 46bb76795472372dd83a77db13b1f729f0772ffe Mon Sep 17 00:00:00 2001 From: Antoine Nguyen Date: Sat, 6 Apr 2013 16:20:47 +0200 Subject: [PATCH] I forgot those files (see #392) --- modoboa/extensions/__init__.py | 23 +++--- modoboa/extensions/amavis/app_settings.py | 92 +++++++++++++++++++++++ 2 files changed, 105 insertions(+), 10 deletions(-) create mode 100644 modoboa/extensions/amavis/app_settings.py diff --git a/modoboa/extensions/__init__.py b/modoboa/extensions/__init__.py index d63a1d286..f0e9f70e5 100644 --- a/modoboa/extensions/__init__.py +++ b/modoboa/extensions/__init__.py @@ -13,10 +13,11 @@ class ModoExtension(object): considered as valid. """ name = None - version = "0.1" + version = None description = "" url = None needs_media = False + always_active = False def infos(self): return dict(name=self.name, label=self.label, version=self.version, @@ -38,8 +39,8 @@ class ExtensionsPool(object): def __init__(self): self.extensions = dict() - def register_extension(self, ext): - self.extensions[ext.name] = dict(cls=ext) + def register_extension(self, ext, show=True): + self.extensions[ext.name] = dict(cls=ext, show=show) def get_extension(self, name): if not name in self.extensions: @@ -58,14 +59,14 @@ class ExtensionsPool(object): result = [] for extname, extdef in self.extensions.iteritems(): extinstance = self.get_extension(extname) - try: - ext = Extension.objects.get(name=extname) - if ext is None: + if not extinstance.always_active: + try: + ext = Extension.objects.get(name=extname) + if not ext.enabled: + continue + except Extension.DoesNotExist: continue - if ext.enabled: - extinstance.load() - except Extension.DoesNotExist: - pass + extinstance.load() try: baseurl = extinstance.url if extinstance.url is not None else extname result += [(r'^%s/' % (baseurl), @@ -78,6 +79,8 @@ class ExtensionsPool(object): def list_all(self): result = [] for extname, extdef in self.extensions.iteritems(): + if not extdef["show"]: + continue infos = extdef["instance"].infos() infos["id"] = extname result += [infos] diff --git a/modoboa/extensions/amavis/app_settings.py b/modoboa/extensions/amavis/app_settings.py new file mode 100644 index 000000000..36cfb6686 --- /dev/null +++ b/modoboa/extensions/amavis/app_settings.py @@ -0,0 +1,92 @@ +# coding: utf-8 +from django.utils.translation import ugettext_lazy as _ +from django import forms +from modoboa.lib.parameters import AdminParametersForm +from modoboa.lib.formutils import SeparatorField, YesNoField + + +class ParametersForm(AdminParametersForm): + app = "amavis" + + max_messages_age = forms.IntegerField( + label=_("Maximum message age"), + initial=14, + help_text=_("Quarantine messages maximum age (in days) before deletion") + ) + + sep1 = SeparatorField(label=_("Messages releasing")) + + released_msgs_cleanup = YesNoField( + label=_("Remove released messages"), + initial="no", + help_text=_("Remove messages marked as released while cleaning up the database") + ) + + am_pdp_mode = forms.ChoiceField( + label=_("Amavis connection mode"), + choices=[("inet", "inet"), ("unix", "unix")], + initial="unix", + help_text=_("Mode used to access the PDP server") + ) + + am_pdp_host = forms.CharField( + label=_("PDP server address"), + initial="localhost", + help_text=_("PDP server address (if inet mode)") + ) + + am_pdp_port = forms.IntegerField( + label=_("PDP server port"), + initial=9998, + help_text=_("PDP server port (if inet mode)") + ) + + am_pdp_socket = forms.CharField( + label=_("PDP server socket"), + initial="/var/amavis/amavisd.sock", + help_text=_("Path to the PDP server socket (if unix mode)") + ) + + check_requests_interval = forms.IntegerField( + label=_("Check requests interval"), + initial=30, + help_text=_("Interval between two release requests checks") + ) + + user_can_release = YesNoField( + label=_("Allow direct release"), + initial="no", + help_text=_("Allow users to directly release their messages") + ) + + self_service = YesNoField( + label=_("Enable self-service mode"), + initial="no", + help_text=_("Activate the 'self-service' mode") + ) + + notifications_sender = forms.EmailField( + label=_("Notifications sender"), + initial="notification@modoboa.org", + help_text=_("The e-mail address used to send notitications") + ) + + # Visibility rules + def visibility_am_pdp_host(self): + return "am_pdp_mode=inet" + + def visibility_am_pdp_port(self): + return "am_pdp_mode=inet" + + def visibility_am_pdp_socket(self): + return "am_pdp_mode=unix" + + +class UserSettings(UserParametersForm): + app = "amavis" + + messages_per_page = forms.IntegerField( + initial=40, + label=_("Number of displayed emails per page"), + help_text=_("Set the maximum number of messages displayed in a page") + )