Few fixes.

see #537
This commit is contained in:
Antoine Nguyen
2014-11-17 17:48:53 +01:00
parent f0861f225b
commit b9cf349900
5 changed files with 34 additions and 14 deletions
+6 -1
View File
@@ -51,11 +51,16 @@ class ExtensionsPool(object):
return self.extensions[name]["instance"]
def is_extension_enabled(self, name):
"""Check if an extension is enabled or not."""
from modoboa.core.models import Extension
if not name in self.extensions:
return False
return Extension.objects.get(name=name).enabled
try:
state = Extension.objects.get(name=name).enabled
except Extension.DoesNotExist:
state = False
return state
def get_extension_infos(self, name):
instance = self.get_extension(name)
@@ -25,14 +25,20 @@ class Command(BaseCommand):
def _change_extension_state(self, name, options):
"""Change the state of an extension."""
extension, created = Extension.objects.get_or_create(name=name)
newstate = options["action"] == "enable"
if extension.enabled == newstate:
return
if newstate:
extension.on()
update_db = True
try:
extension = Extension.objects.get(name=name)
except Extension.DoesNotExist:
extension = Extension.objects.create(name=name, enabled=newstate)
update_db = False
else:
extension.off()
if extension.enabled == newstate:
return
if newstate:
extension.on(update_db)
else:
extension.off(update_db)
def handle(self, *args, **options):
"""Entry point."""
+13 -6
View File
@@ -418,6 +418,9 @@ class ObjectAccess(models.Model):
class Extension(models.Model):
"""A modoboa extension."""
name = models.CharField(max_length=150)
enabled = models.BooleanField(
ugettext_lazy('enabled'),
@@ -444,9 +447,11 @@ class Extension(models.Model):
path = os.path.realpath(sys.modules[modname].__file__)
self.extdir = os.path.dirname(path)
def on(self):
self.enabled = True
self.save()
def on(self, update_db=True):
"""Activate this extension."""
if update_db:
self.enabled = True
self.save()
self.__get_ext_instance()
self.instance.load()
@@ -458,14 +463,16 @@ class Extension(models.Model):
events.raiseEvent("ExtEnabled", self)
def off(self):
def off(self, update_db=True):
"""Disable this extension."""
self.__get_ext_instance()
if self.instance is None:
return
self.instance.destroy()
self.enabled = False
self.save()
if update_db:
self.enabled = False
self.save()
if self.instance.needs_media:
path = os.path.join(settings.MEDIA_ROOT, self.name)
@@ -14,6 +14,8 @@ class RelayDomainFactory(PermissionFactory):
FACTORY_FOR = models.RelayDomain
target_host = 'external.host.tld'
enabled = True
verify_recipients = True
service = factory.SubFactory(ServiceFactory)
+1 -1
View File
@@ -58,7 +58,7 @@ class DeployTest(unittest.TestCase):
self.dbhost, self.projname)
cmd = (
"modoboa-admin.py deploy --syncdb --collectstatic --dburl %s "
"--domain %s --extensions all %s"
"--extensions all --domain %s %s"
% (dburl, 'localhost', self.projname)
)
code, output = exec_cmd(cmd, cwd=self.workdir)