From 6e6a6073d26add9e741c93cbcb94d6ea87977ff1 Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Wed, 25 May 2016 01:06:57 -0400 Subject: [PATCH] Relate roles to organizations --- mayan/apps/permissions/admin.py | 2 +- .../migrations/0004_auto_20160525_0159.py | 31 +++++++++++++++++++ mayan/apps/permissions/models.py | 14 +++++++-- 3 files changed, 43 insertions(+), 4 deletions(-) create mode 100644 mayan/apps/permissions/migrations/0004_auto_20160525_0159.py diff --git a/mayan/apps/permissions/admin.py b/mayan/apps/permissions/admin.py index f135121177..a9f891a952 100644 --- a/mayan/apps/permissions/admin.py +++ b/mayan/apps/permissions/admin.py @@ -13,7 +13,7 @@ class RoleAdmin(admin.ModelAdmin): def permissions_list(self, instance): return ','.join(instance.permissions.values_list('name', flat=True)) - filter_horizontal = ('groups', 'permissions') + filter_horizontal = ('organization_groups', 'permissions') list_display = ('label', 'permissions_list', 'groups_list') diff --git a/mayan/apps/permissions/migrations/0004_auto_20160525_0159.py b/mayan/apps/permissions/migrations/0004_auto_20160525_0159.py new file mode 100644 index 0000000000..921017dece --- /dev/null +++ b/mayan/apps/permissions/migrations/0004_auto_20160525_0159.py @@ -0,0 +1,31 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import migrations, models +import organizations.shortcuts + + +class Migration(migrations.Migration): + + dependencies = [ + ('organizations', '0002_add_data_default_organization'), + ('user_management', '0003_auto_20160525_0155'), + ('permissions', '0003_remove_role_name'), + ] + + operations = [ + migrations.RemoveField( + model_name='role', + name='groups', + ), + migrations.AddField( + model_name='role', + name='organization', + field=models.ForeignKey(default=organizations.shortcuts.get_current_organization, to='organizations.Organization'), + ), + migrations.AddField( + model_name='role', + name='organization_groups', + field=models.ManyToManyField(related_name='roles', verbose_name='Groups', to='user_management.MayanGroup'), + ), + ] diff --git a/mayan/apps/permissions/models.py b/mayan/apps/permissions/models.py index 35b55cf0b9..230e3d51bd 100644 --- a/mayan/apps/permissions/models.py +++ b/mayan/apps/permissions/models.py @@ -2,12 +2,16 @@ from __future__ import unicode_literals import logging -from django.contrib.auth.models import Group from django.core.urlresolvers import reverse from django.db import models from django.utils.encoding import python_2_unicode_compatible from django.utils.translation import ugettext_lazy as _ +from organizations.models import Organization +from organizations.managers import CurrentOrganizationManager +from organizations.shortcuts import get_current_organization +from user_management.models import MayanGroup + from .managers import RoleManager, StoredPermissionManager logger = logging.getLogger(__name__) @@ -69,11 +73,15 @@ class Role(models.Model): permissions = models.ManyToManyField( StoredPermission, related_name='roles', verbose_name=_('Permissions') ) - groups = models.ManyToManyField( - Group, related_name='roles', verbose_name=_('Groups') + organization_groups = models.ManyToManyField( + MayanGroup, related_name='roles', verbose_name=_('Groups') + ) + organization = models.ForeignKey( + Organization, default=get_current_organization ) objects = RoleManager() + on_organization = CurrentOrganizationManager() def __str__(self): return self.label