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