Use the new AddRemove View for the Role's group and permissions views as well as the Group's role views. Convert the API to use viewsets. Add more tests. Add role created and edited events. Add event subscription support to roles. Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
99 lines
3.3 KiB
Python
99 lines
3.3 KiB
Python
from __future__ import unicode_literals
|
|
|
|
from django.apps import apps
|
|
from django.utils.translation import ugettext_lazy as _
|
|
|
|
from mayan.apps.acls import ModelPermission
|
|
from mayan.apps.acls.links import link_acl_list
|
|
from mayan.apps.acls.permissions import (
|
|
permission_acl_edit, permission_acl_view
|
|
)
|
|
from mayan.apps.common import (
|
|
MayanAppConfig, menu_list_facet, menu_multi_item, menu_object,
|
|
menu_secondary, menu_setup
|
|
)
|
|
from mayan.apps.common.signals import perform_upgrade
|
|
from mayan.apps.events import ModelEventType
|
|
from mayan.apps.events.links import (
|
|
link_events_for_object, link_object_event_types_user_subcriptions_list
|
|
)
|
|
from mayan.apps.navigation import SourceColumn
|
|
|
|
from .events import event_role_created, event_role_edited
|
|
from .handlers import handler_purge_permissions
|
|
from .links import (
|
|
link_group_roles, link_permission_grant, link_permission_revoke,
|
|
link_role_create, link_role_delete, link_role_edit, link_role_groups,
|
|
link_role_list, link_role_permissions
|
|
)
|
|
from .methods import method_group_roles_add, method_group_roles_remove
|
|
from .permissions import (
|
|
permission_role_delete, permission_role_edit, permission_role_view
|
|
)
|
|
from .search import * # NOQA
|
|
|
|
|
|
class PermissionsApp(MayanAppConfig):
|
|
app_namespace = 'permissions'
|
|
app_url = 'permissions'
|
|
has_rest_api = True
|
|
has_tests = True
|
|
name = 'mayan.apps.permissions'
|
|
verbose_name = _('Permissions')
|
|
|
|
def ready(self):
|
|
super(PermissionsApp, self).ready()
|
|
from actstream import registry
|
|
|
|
Role = self.get_model('Role')
|
|
Group = apps.get_model(app_label='auth', model_name='Group')
|
|
|
|
Group.add_to_class(name='roles_add', value=method_group_roles_add)
|
|
Group.add_to_class(name='roles_remove', value=method_group_roles_remove)
|
|
|
|
ModelEventType.register(
|
|
event_types=(event_role_created, event_role_edited), model=Role
|
|
)
|
|
|
|
ModelPermission.register(
|
|
model=Role, permissions=(
|
|
permission_acl_edit, permission_acl_view,
|
|
permission_role_delete, permission_role_edit,
|
|
permission_role_view
|
|
)
|
|
)
|
|
|
|
SourceColumn(attribute='label', is_identifier=True, source=Role)
|
|
|
|
menu_list_facet.bind_links(
|
|
links=(
|
|
link_acl_list, link_events_for_object,
|
|
link_object_event_types_user_subcriptions_list,
|
|
link_role_groups, link_role_permissions,
|
|
), sources=(Role,)
|
|
)
|
|
menu_list_facet.bind_links(
|
|
links=(link_group_roles,), sources=(Group,)
|
|
)
|
|
menu_object.bind_links(
|
|
links=(
|
|
link_role_edit, link_role_delete
|
|
), sources=(Role,)
|
|
)
|
|
menu_multi_item.bind_links(
|
|
links=(link_permission_grant, link_permission_revoke),
|
|
sources=('permissions:role_permissions',)
|
|
)
|
|
menu_secondary.bind_links(
|
|
links=(link_role_list, link_role_create),
|
|
sources=(Role, 'permissions:role_create', 'permissions:role_list')
|
|
)
|
|
menu_setup.bind_links(links=(link_role_list,))
|
|
|
|
perform_upgrade.connect(
|
|
dispatch_uid='permissions_handler_purge_permissions',
|
|
receiver=handler_purge_permissions
|
|
)
|
|
|
|
registry.register(Role)
|