mirror of
https://github.com/jwinterm/modoboa.git
synced 2026-10-18 05:51:26 +02:00
@@ -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
@@ -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)
|
||||
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user