for user in User.objects.filter(groups__name='DomainAdmins'): try: controls.create_pool(user) except IntegrityError: pass def load(self): from app_settings import ParametersForm parameters.register(ParametersForm, _("Limits")) def destroy(self): parameters.unregister() Group.objects.get(name="Resellers").delete() exts_pool.register_extension(Limits) @events.observe("GetExtraRoles") def get_extra_roles(user): if user.is_superuser: return [("Resellers", _("Reseller")),] return [] @events.observe("ExtraAdminContent") def display_pool_usage(user, target, currentpage): from django.template.loader import render_to_string if target != "leftcol" or user.is_superuser: return [] if currentpage == "identities": names = ["mailboxes_limit", "mailbox_aliases_limit"]
class Stats(ModoExtension): name = "stats" label = "Statistics" version = "1.0" description = ugettext_lazy("Graphical statistics about emails traffic using RRDtool") needs_media = True def load(self): from app_settings import ParametersForm events.registerEvent("GetGraphSets") parameters.register(ParametersForm, ugettext_lazy("Graphical statistics")) def destroy(self): events.unregister("AdminMenuDisplay", menu) exts_pool.register_extension(Stats) @events.observe("UserMenuDisplay") def menu(target, user): if target != "top_menu" or user.group == "SimpleUsers": return [] return [ {"name": "stats", "label": _("Statistics"), "url": reverse('fullindex')} ] @events.observe("GetGraphSets") def get_default_graph_sets():
class AdminConsole(ModoExtension): name = "admin" label = ugettext_lazy("Administration console") version = "1.0" description = ugettext_lazy( "Web based console to manage domains, accounts and aliases") always_active = True def load(self): from app_settings import GeneralParametersForm parameters.register(GeneralParametersForm, _("General")) def destroy(self): parameters.unregister() exts_pool.register_extension(AdminConsole, show=False) @events.observe("ExtDisabled") def unset_default_topredirection(extension): """ Simple callback to change the default redirection if the corresponding extension is being disabled. """ topredirection = parameters.get_admin("DEFAULT_TOP_REDIRECTION") if topredirection == extension.name: parameters.save_admin("DEFAULT_TOP_REDIRECTION", "userprefs")
onCreateMailbox(None, mb) def load(self): from app_settings import ParametersForm parameters.register(ParametersForm, ugettext_lazy("Automatic replies")) def destroy(self): events.unregister("CreateDomain", onCreateDomain) events.unregister("DeleteDomain", onDeleteDomain) events.unregister("CreateMailbox", onCreateMailbox) events.unregister("DeleteMailbox", onDeleteMailbox) events.unregister("ModifyMailbox", onModifyMailbox) events.unregister("UserMenuDisplay", menu) parameters.unregister() exts_pool.register_extension(PostfixAutoreply) @events.observe("ExtraUprefsRoutes") def extra_routes(): return [(r'^autoreply/$', 'modoboa.extensions.postfix_autoreply.views.autoreply'),] @events.observe("ExtraUprefsJS") def extra_js(user): return ["""function autoreply_cb() { $('#id_untildate').datepicker({format: 'yyyy-mm-dd', language: '%s'}); } """ % parameters.get_user(user, "LANG", app="general") ]
Users.objects.create(email="@%s" % dom.name, fullname=dom.name, priority=7, policy=p) def load(self): from app_settings import ParametersForm, UserSettings parameters.register(ParametersForm, "Amavis") parameters.register(UserSettings, _("Quarantine")) def destroy(self): events.unregister("UserMenuDisplay", menu) parameters.unregister() exts_pool.register_extension(Amavis) @events.observe("UserMenuDisplay") def menu(target, user): from modoboa.lib.webutils import static_url if target == "top_menu": return [{ "name": "quarantine", "label": _("Quarantine"), "url": reverse('modoboa.extensions.amavis.views.index') }] return []
def load(self): from app_settings import ParametersForm parameters.register(ParametersForm, ugettext_lazy("Automatic replies")) def destroy(self): events.unregister("CreateDomain", onCreateDomain) events.unregister("DeleteDomain", onDeleteDomain) events.unregister("CreateMailbox", onCreateMailbox) events.unregister("DeleteMailbox", onDeleteMailbox) events.unregister("ModifyMailbox", onModifyMailbox) events.unregister("UserMenuDisplay", menu) parameters.unregister() exts_pool.register_extension(PostfixAutoreply) @events.observe("ExtraUprefsRoutes") def extra_routes(): return [ (r'^autoreply/$', 'modoboa.extensions.postfix_autoreply.views.autoreply'), ] @events.observe("ExtraUprefsJS") def extra_js(user): return [ """function autoreply_cb() { $('#id_untildate').datepicker({format: 'yyyy-mm-dd', language: '%s'});
name = "sievefilters" label = "Sieve filters" version = "1.0" description = ugettext_lazy("Plugin to easily create server-side filters") url = "sfilters" def load(self): from app_settings import ParametersForm, UserSettings parameters.register(ParametersForm, _("Sieve filters")) parameters.register(UserSettings, _("Message filters")) def destroy(self): events.unregister("UserMenuDisplay", menu) parameters.unregister() exts_pool.register_extension(SieveFilters) @events.observe("UserMenuDisplay") def menu(target, user): import views if target != "options_menu": return [] if not user.has_mailbox: return [] return [ {"name" : "sievefilters", "label" : _("Message filters"), "url" : reverse(views.index), "img" : "icon-check"} ]
from modoboa.extensions import ModoExtension, exts_pool from modoboa.lib import parameters, events class AdminConsole(ModoExtension): name = "admin" label = ugettext_lazy("Administration console") version = "1.0" description = ugettext_lazy("Web based console to manage domains, accounts and aliases") always_active = True def load(self): from app_settings import GeneralParametersForm parameters.register(GeneralParametersForm, _("General")) def destroy(self): parameters.unregister() exts_pool.register_extension(AdminConsole, show=False) @events.observe("ExtDisabled") def unset_default_topredirection(extension): """ Simple callback to change the default redirection if the corresponding extension is being disabled. """ topredirection = parameters.get_admin("DEFAULT_TOP_REDIRECTION") if topredirection == extension.name: parameters.save_admin("DEFAULT_TOP_REDIRECTION", "userprefs")
# coding: utf-8 from django.utils.translation import ugettext_lazy from modoboa.extensions import ModoExtension, exts_pool from modoboa.lib import parameters class UserPreferences(ModoExtension): name = "userprefs" label = ugettext_lazy("User preferences") version = "1.0" description = ugettext_lazy("Per-user settings") always_active = True def load(self): from app_settings import UserSettings parameters.register(UserSettings, ugettext_lazy("General")) def destroy(self): parameters.unregister() exts_pool.register_extension(UserPreferences, show=False)
for user in User.objects.filter(groups__name='DomainAdmins'): try: controls.create_pool(user) except IntegrityError: pass def load(self): from app_settings import ParametersForm parameters.register(ParametersForm, _("Limits")) def destroy(self): parameters.unregister() Group.objects.get(name="Resellers").delete() exts_pool.register_extension(Limits) @events.observe("GetExtraRoles") def get_extra_roles(user): if user.is_superuser: return [ ("Resellers", _("Reseller")), ] return [] @events.observe("ExtraAdminContent") def display_pool_usage(user, target, currentpage): from django.template.loader import render_to_string
version = "1.0" description = ugettext_lazy( "Graphical statistics about emails traffic using RRDtool") needs_media = True def load(self): from app_settings import ParametersForm events.registerEvent("GetGraphSets") parameters.register(ParametersForm, ugettext_lazy("Graphical statistics")) def destroy(self): events.unregister("AdminMenuDisplay", menu) exts_pool.register_extension(Stats) @events.observe("UserMenuDisplay") def menu(target, user): if target != "top_menu" or user.group == "SimpleUsers": return [] return [{ "name": "stats", "label": _("Statistics"), "url": reverse('fullindex') }] @events.observe("GetGraphSets") def get_default_graph_sets():
label = "Sieve filters" version = "1.0" description = ugettext_lazy("Plugin to easily create server-side filters") url = "sfilters" def load(self): from app_settings import ParametersForm, UserSettings parameters.register(ParametersForm, ugettext_lazy("Sieve filters")) parameters.register(UserSettings, ugettext_lazy("Message filters")) def destroy(self): events.unregister("UserMenuDisplay", menu) parameters.unregister() exts_pool.register_extension(SieveFilters) @events.observe("UserMenuDisplay") def menu(target, user): import views if target != "options_menu": return [] if not user.has_mailbox: return [] return [{ "name": "sievefilters", "label": _("Message filters"), "url": reverse(views.index), "img": "icon-check"
u = Users.objects.get(email="@%s" % dom.name) except Users.DoesNotExist: p = Policy.objects.create(policy_name=dom.name) Users.objects.create(email="@%s" % dom.name, fullname=dom.name, priority=7, policy=p) def load(self): from app_settings import ParametersForm, UserSettings parameters.register(ParametersForm, "Amavis") parameters.register(UserSettings, ugettext_lazy("Quarantine")) def destroy(self): events.unregister("UserMenuDisplay", menu) parameters.unregister() exts_pool.register_extension(Amavis) @events.observe("UserMenuDisplay") def menu(target, user): from modoboa.lib.webutils import static_url if target == "top_menu": return [ {"name": "quarantine", "label": _("Quarantine"), "url": reverse('modoboa.extensions.amavis.views.index')} ] return []
label = "Webmail" version = "1.0" description = ugettext_lazy("Simple IMAP webmail") needs_media = True def load(self): from app_settings import ParametersForm, UserSettings parameters.register(ParametersForm, "Webmail") parameters.register(UserSettings, "Webmail") def destroy(self): events.unregister("UserMenuDisplay", menu) parameters.unregister() exts_pool.register_extension(Webmail) @events.observe("UserMenuDisplay") def menu(target, user): if target != "top_menu": return [] if not user.has_mailbox: return [] return [ {"name" : "webmail", "label" : _("Webmail"), "url" : reverse("modoboa.extensions.webmail.views.index")}, ] @events.observe("UserLogout") def userlogout(request):