wip: Radicale extension #574

Properly init extension.
This commit is contained in:
Antoine Nguyen
2014-06-27 15:14:23 +02:00
parent 314f60b87b
commit 36000961a5
3 changed files with 41 additions and 4 deletions
+7 -4
View File
@@ -10,6 +10,7 @@ from django.db import IntegrityError
from django.contrib.contenttypes.models import ContentType
from django.utils.translation import ugettext_lazy
from modoboa.lib import events, parameters
from modoboa.lib.permissions import add_permissions_to_group
from modoboa.core.extensions import ModoExtension, exts_pool
levents = [
@@ -38,10 +39,12 @@ class Limits(ModoExtension):
grp.permissions.add(*dagrp.permissions.all())
ct = ContentType.objects.get_for_model(Domain)
for pname in ["view_domains", "add_domain", "change_domain", "delete_domain"]:
perm = Permission.objects.get(content_type=ct, codename=pname)
grp.permissions.add(perm)
grp.save()
add_permissions_to_group(
"Resellers", [("admin", "view_domains"),
("admin", "add_domain"),
("admin", "change_domain"),
("admin", "delete_domain")]
)
for user in User.objects.filter(groups__name='DomainAdmins'):
try:
+17
View File
@@ -11,6 +11,21 @@ from modoboa.lib.permissions import add_permissions_to_group
from modoboa.core.extensions import ModoExtension, exts_pool
def init_limits_dependant_features():
"""Custom initialization if the limits extension activated.
We mainly define extra permissions.
"""
add_permissions_to_group(
"Resellers", [("radicale", "add_usercalendar"),
("radicale", "change_usercalendar"),
("radicale", "delete_usercalendar"),
("radicale", "add_sharedcalendar"),
("radicale", "change_sharedcalendar"),
("radicale", "delete_sharedcalendar")]
)
class Radicale(ModoExtension):
"""
"""
@@ -32,6 +47,8 @@ class Radicale(ModoExtension):
("radicale", "change_sharedcalendar"),
("radicale", "delete_sharedcalendar")]
)
if exts_pool.is_extension_enabled('limits'):
init_limits_dependant_features()
def load(self):
"""Plugin loading.
@@ -13,3 +13,20 @@ def top_menu(target, user):
"url": reverse('modoboa.extensions.radicale.views.index')}
]
return []
@events.observe('ExtEnabled')
def extension_enabled(extension):
"""ExtEnabled event listener.
Usefull when *limits* extension is activated after *radicale*.
:param extension: enabled extension
"""
if extension.name == 'limits':
from modoboa.extensions.radicale import (
init_limits_dependant_features
)
init_limits_dependant_features()