Fix wrong calls.

see #680
This commit is contained in:
Antoine Nguyen
2015-02-06 19:02:09 +01:00
parent df98dd6a6e
commit 9faf21a97f
5 changed files with 23 additions and 28 deletions
+3 -9
View File
@@ -29,21 +29,15 @@ class Amavis(ModoExtension):
for existing domains to let Amavis consider them local.
"""
from modoboa.extensions.admin.models import Domain
from modoboa.extensions.amavis.models import Users
from modoboa.extensions.amavis.lib import (
create_user_and_policy, create_user_and_use_policy
)
for dom in Domain.objects.all():
try:
Users.objects.get(email="@%s" % dom.name)
except Users.DoesNotExist:
create_user_and_policy(dom.name)
policy = create_user_and_policy("@{0}".format(dom.name))
for domalias in dom.domainalias_set.all():
try:
Users.objects.get(email='@%s' % domalias.name)
except Users.DoesNotExist:
create_user_and_use_policy(domalias.name, dom.name)
domalias_pattern = "@{0}".format(domalias.name)
create_user_and_use_policy(domalias_pattern, policy)
def load(self):
from .app_settings import ParametersForm, UserSettings
@@ -44,7 +44,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
@@ -48,21 +48,15 @@ def init_amavis_dependant_features():
We create records for *users* and *policy* tables for each defined
relay domain or relay domain alias.
"""
from modoboa.extensions.amavis.models import Users
from modoboa.extensions.amavis.lib import (
create_user_and_policy, create_user_and_use_policy
)
for rdom in RelayDomain.objects.all():
try:
Users.objects.get(email="@%s" % rdom.name)
except Users.DoesNotExist:
create_user_and_policy(rdom.name)
policy = create_user_and_policy("@{0}".format(rdom.name))
for rdomalias in rdom.relaydomainalias_set.all():
try:
Users.objects.get(email='@%s' % rdomalias.name)
except Users.DoesNotExist:
create_user_and_use_policy(rdomalias.name, rdom.name)
rdomalias_pattern = "@{0}".format(rdomalias.name)
create_user_and_use_policy(rdomalias_pattern, policy)
class PostfixRelayDomains(ModoExtension):
@@ -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")