Merge branch '1.2.x'

Conflicts:
	modoboa/extensions/amavis/__init__.py
	modoboa/extensions/postfix_relay_domains/__init__.py
This commit is contained in:
Antoine Nguyen
2015-02-06 19:12:02 +01:00
4 changed files with 32 additions and 29 deletions
+9 -10
View File
@@ -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)
)
+12 -8
View File
@@ -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
+8 -10
View File
@@ -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")