diff --git a/modoboa/extensions/limits/migrations/0002_load_initial_data.py b/modoboa/extensions/limits/migrations/0002_load_initial_data.py index acedaf0d2..ef293c25b 100644 --- a/modoboa/extensions/limits/migrations/0002_load_initial_data.py +++ b/modoboa/extensions/limits/migrations/0002_load_initial_data.py @@ -1,39 +1,40 @@ # -*- coding: utf-8 -*- from __future__ import unicode_literals -from django.db import IntegrityError, models, migrations +from django.db import models, migrations +from modoboa.core.extensions import exts_pool from modoboa.lib.migration_tools import add_permissions_to_group -from modoboa.extensions.limits import controls +from modoboa.extensions.limits.midels import LimitTemplates def load_initial_data(apps, schema_editor): """Load initial data.""" - ContentType = apps.get_model("contenttypes", "ContentType") Group = apps.get_model("auth", "Group") User = apps.get_model("core", "User") - Domain = apps.get_model("admin", "Domain") + LimitsPool = apps.get_model("limits", "LimitsPool") + Limit = apps.get_model("limits", "Limit") - ct = ContentType.objects.get(app_label="admin", model="domain") dagrp = Group.objects.get(name="DomainAdmins") - grp = Group(name="Resellers") grp.save() grp.permissions.add(*dagrp.permissions.all()) - - ct = ContentType.objects.get_for_model(Domain) add_permissions_to_group( - apps, "Resellers", [("admin", "domain", "view_domains"), - ("admin", "domain", "add_domain"), - ("admin", "domain", "change_domain"), - ("admin", "domain", "delete_domain")] + apps, grp, [("admin", "domain", "view_domains"), + ("admin", "domain", "add_domain"), + ("admin", "domain", "change_domain"), + ("admin", "domain", "delete_domain")] ) + if exts_pool.is_extension_installed( + "modoboa.extensions.postfix_relay_domains"): + from modoboa.extensions.postfix_relay_domains.modo_extension \ + import RESELLERS_PERMISSIONS + add_permissions_to_group(apps, grp, RESELLERS_PERMISSIONS) - for user in User.objects.filter(groups__name='DomainAdmins'): - try: - controls.create_pool(user) - except IntegrityError: - pass + for user in User.objects.filter(groups__name="DomainAdmins"): + pool, created = LimitsPool.objects.get_or_create(user=user) + for tpl in LimitTemplates().templates(): + Limit.objects.create(name=tpl[0], pool=pool, maxvalue=0) class Migration(migrations.Migration): diff --git a/modoboa/extensions/postfix_relay_domains/migrations/0002_load_initial_data.py b/modoboa/extensions/postfix_relay_domains/migrations/0002_load_initial_data.py index 85024719c..4be3e1d02 100644 --- a/modoboa/extensions/postfix_relay_domains/migrations/0002_load_initial_data.py +++ b/modoboa/extensions/postfix_relay_domains/migrations/0002_load_initial_data.py @@ -4,6 +4,9 @@ from __future__ import unicode_literals from django.db import models, migrations from modoboa.core.extensions import exts_pool +from modoboa.lib.migration_tools import add_permissions_to_group + +from ..modo_extension import RESELLERS_PERMISSIONS def load_initial_data(apps, schema_editor): @@ -16,11 +19,6 @@ def load_initial_data(apps, schema_editor): return Group = apps.get_model("auth", "Group") - Permission = apps.get_model("auth", "Permission") - ContentType = apps.get_model("contenttypes", "ContentType") - RelayDomain = apps.get_model("postfix_relay_domains", "RelayDomain") - RelayDomainAlias = apps.get_model( - "postfix_relay_domains", "RelayDomainAlias") LimitsPool = apps.get_model("limits", "LimitsPool") Limit = apps.get_model("limits", "Limit") @@ -33,17 +31,7 @@ def load_initial_data(apps, schema_editor): # Add new permissions to the Resellers group. grp = Group.objects.get(name='Resellers') - for model in [RelayDomain, RelayDomainAlias, Service]: - ct = ContentType.objects.get_for_model(model) - name = model.__name__.lower() - for action in ['add', 'change', 'delete']: - grp.permissions.add( - Permission.objects.get( - content_type=ct, codename='%s_%s' % (action, name) - ) - ) - grp.save() - + add_permissions_to_group(apps, grp, RESELLERS_PERMISSIONS) class Migration(migrations.Migration): diff --git a/modoboa/extensions/postfix_relay_domains/modo_extension.py b/modoboa/extensions/postfix_relay_domains/modo_extension.py index 47819ba9a..ed212771f 100644 --- a/modoboa/extensions/postfix_relay_domains/modo_extension.py +++ b/modoboa/extensions/postfix_relay_domains/modo_extension.py @@ -18,6 +18,19 @@ EXTENSION_EVENTS = [ "FillRelayDomainInstances" ] +RESELLERS_PERMISSIONS = [ + ("postfix_relay_domains", "relaydomain", "add_relaydomain"), + ("postfix_relay_domains", "relaydomain", "change_relaydomain"), + ("postfix_relay_domains", "relaydomain", "delete_relaydomain"), + ("postfix_relay_domains", "relaydomainalias", "add_relaydomainalias"), + ("postfix_relay_domains", "relaydomainalias", "change_relaydomainalias"), + ("postfix_relay_domains", "relaydomainalias", "delete_relaydomainalias"), + ("postfix_relay_domains", "service", "add_service"), + ("postfix_relay_domains", "service", "change_service"), + ("postfix_relay_domains", "service", "delete_service") +] + + class PostfixRelayDomains(ModoExtension): """Extension declaration.""" diff --git a/modoboa/lib/permissions.py b/modoboa/lib/permissions.py index 144fe1c62..5558bc3e6 100644 --- a/modoboa/lib/permissions.py +++ b/modoboa/lib/permissions.py @@ -1,7 +1,9 @@ # coding: utf-8 + from django.contrib.contenttypes.models import ContentType -from django.utils.translation import ugettext as _ from django.db import IntegrityError +from django.utils.translation import ugettext as _ + from modoboa.core.models import ObjectAccess, User from modoboa.lib import events