mirror of
https://github.com/jwinterm/modoboa.git
synced 2026-10-18 05:51:26 +02:00
Merge branch '1.2.x'
Conflicts: modoboa/extensions/amavis/__init__.py modoboa/extensions/postfix_relay_domains/__init__.py
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
"""General event callbacks."""
|
||||
|
||||
from django.core.urlresolvers import reverse
|
||||
from django.utils.translation import ugettext as _
|
||||
from django.template import Template, Context
|
||||
@@ -16,15 +18,11 @@ def create_relay_domains_records():
|
||||
"""Create records for existing relay domains."""
|
||||
from modoboa.extensions.postfix_relay_domains.models import RelayDomain
|
||||
|
||||
for dom in RelayDomain.objects.all():
|
||||
name = "@{0}".format(dom.name)
|
||||
policy, created = Policy.objects.get_or_create(policy_name=name[:32])
|
||||
Users.objects.get_or_create(
|
||||
email=name, fullname=name, priority=7, policy=policy)
|
||||
for rdalias in dom.relaydomainalias_set.all():
|
||||
name = "@{0}".format(rdalias.name)
|
||||
Users.objects.get_or_create(
|
||||
email=name, fullname=name, priority=7, policy=policy)
|
||||
for rdom in RelayDomain.objects.all():
|
||||
policy = create_user_and_policy("@{0}".format(rdom.name))
|
||||
for rdomalias in rdom.relaydomainalias_set.all():
|
||||
rdomalias_pattern = "@{0}".format(rdomalias.name)
|
||||
create_user_and_use_policy(rdomalias_pattern, policy)
|
||||
|
||||
|
||||
@events.observe("InitialDataLoaded")
|
||||
@@ -67,7 +65,8 @@ def on_domain_deleted(domain):
|
||||
@events.observe("DomainAliasCreated")
|
||||
def on_domain_alias_created(user, domainalias):
|
||||
create_user_and_use_policy(
|
||||
"@{0}".format(domainalias.name), domainalias.target.name
|
||||
"@{0}".format(domainalias.name),
|
||||
"@{0}".format(domainalias.target.name)
|
||||
)
|
||||
|
||||
|
||||
|
||||
@@ -235,6 +235,8 @@ def create_user_and_policy(name, priority=7):
|
||||
:param str name: name
|
||||
:return: the new ``Policy`` object
|
||||
"""
|
||||
if Users.objects.filter(email=name).exists():
|
||||
return Policy.objects.get(policy_name=name[:32])
|
||||
policy = Policy.objects.create(policy_name=name[:32])
|
||||
Users.objects.create(
|
||||
email=name, fullname=name, priority=priority, policy=policy
|
||||
@@ -242,14 +244,15 @@ def create_user_and_policy(name, priority=7):
|
||||
return policy
|
||||
|
||||
|
||||
def create_user_and_use_policy(name, policy_name, priority=7):
|
||||
def create_user_and_use_policy(name, policy, priority=7):
|
||||
"""Create a *users* record and use an existing policy.
|
||||
|
||||
:param str name: user record name
|
||||
:param str policy_name: policy name
|
||||
:param str policy: string or Policy instance
|
||||
"""
|
||||
policy = Policy.objects.get(policy_name="@{0}".format(policy_name[:32]))
|
||||
Users.objects.create(
|
||||
if isinstance(policy, basestring):
|
||||
policy = Policy.objects.get(policy_name=policy[:32])
|
||||
Users.objects.get_or_create(
|
||||
email=name, fullname=name, priority=priority, policy=policy
|
||||
)
|
||||
|
||||
@@ -319,9 +322,9 @@ def setup_manual_learning_for_domain(domain):
|
||||
|
||||
:return: True if learning has been setup, False otherwise
|
||||
"""
|
||||
if Policy.objects.filter(sa_username=domain.name).count():
|
||||
if Policy.objects.filter(sa_username=domain.name).exists():
|
||||
return False
|
||||
policy = Policy.objects.get(policy_name=domain.name)
|
||||
policy = Policy.objects.get(policy_name=domain.name[:32])
|
||||
policy.sa_username = domain.name
|
||||
policy.save()
|
||||
return True
|
||||
@@ -333,8 +336,9 @@ def setup_manual_learning_for_mbox(mbox):
|
||||
:return: True if learning has been setup, False otherwise
|
||||
"""
|
||||
result = False
|
||||
if not Policy.objects.filter(policy_name=mbox.full_address).exists():
|
||||
policy = create_user_and_policy(mbox.full_address)
|
||||
pname = mbox.full_address[:32]
|
||||
if not Policy.objects.filter(policy_name=pname).exists():
|
||||
policy = create_user_and_policy(pname)
|
||||
for alias in mbox.alias_addresses:
|
||||
create_user_and_use_policy(alias, policy)
|
||||
result = True
|
||||
|
||||
@@ -16,10 +16,13 @@ from modoboa.extensions.admin.models import Domain
|
||||
from modoboa.lib import parameters
|
||||
|
||||
from . import general_callbacks
|
||||
from .models import Policy, Users
|
||||
from .lib import create_user_and_policy, create_user_and_use_policy
|
||||
|
||||
|
||||
class Amavis(ModoExtension):
|
||||
|
||||
"""The Amavis extension."""
|
||||
|
||||
name = "amavis"
|
||||
label = "Amavis frontend"
|
||||
version = "1.0"
|
||||
@@ -36,15 +39,10 @@ class Amavis(ModoExtension):
|
||||
def load_initial_data(self):
|
||||
"""Create records for existing domains and co."""
|
||||
for dom in Domain.objects.all():
|
||||
name = "@{0}".format(dom.name)
|
||||
policy, created = Policy.objects.get_or_create(
|
||||
policy_name=name[:32])
|
||||
Users.objects.get_or_create(
|
||||
email=name, fullname=name, priority=7, policy=policy)
|
||||
for dalias in dom.domainalias_set.all():
|
||||
name = "@{0}".format(dalias.name)
|
||||
Users.objects.get_or_create(
|
||||
email=name, fullname=name, priority=7, policy=policy)
|
||||
policy = create_user_and_policy("@{0}".format(dom.name))
|
||||
for domalias in dom.domainalias_set.all():
|
||||
domalias_pattern = "@{0}".format(domalias.name)
|
||||
create_user_and_use_policy(domalias_pattern, policy)
|
||||
|
||||
if not exts_pool.is_extension_installed(
|
||||
"modoboa.extensions.postfix_relay_domains"):
|
||||
|
||||
@@ -25,7 +25,9 @@ def on_relay_domain_deleted(rdomain):
|
||||
@events.observe("RelayDomainAliasCreated")
|
||||
def on_relay_domain_alias_created(user, rdomainalias):
|
||||
create_user_and_use_policy(
|
||||
"@{0}".format(rdomainalias.name), rdomainalias.target.name)
|
||||
"@{0}".format(rdomainalias.name),
|
||||
"@{0}".format(rdomainalias.target.name)
|
||||
)
|
||||
|
||||
|
||||
@events.observe("RelayDomainAliasDeleted")
|
||||
|
||||
Reference in New Issue
Block a user