diff --git a/lms/envs/devstack_docker.py b/lms/envs/devstack_docker.py index a795d41d12..eb1f62c77b 100644 --- a/lms/envs/devstack_docker.py +++ b/lms/envs/devstack_docker.py @@ -82,6 +82,8 @@ COURSE_CATALOG_API_URL = 'http://edx.devstack.discovery:18381/api/v1/' # LOGGING['handlers']['console']['level'] = 'DEBUG' # LOGGING['loggers']['django.db.backends'] = {'handlers': ['console'], 'level': 'DEBUG', 'propagate': False} +SYSTEM_WIDE_ROLE_CLASSES = os.environ.get("SYSTEM_WIDE_ROLE_CLASSES", SYSTEM_WIDE_ROLE_CLASSES) +SYSTEM_WIDE_ROLE_CLASSES.extend(['system_wide_roles.SystemWideRoleAssignment']) + if FEATURES['ENABLE_ENTERPRISE_INTEGRATION']: - SYSTEM_WIDE_ROLE_CLASSES = os.environ.get("SYSTEM_WIDE_ROLE_CLASSES", []) SYSTEM_WIDE_ROLE_CLASSES.extend(['enterprise.SystemWideEnterpriseUserRoleAssignment']) diff --git a/openedx/core/djangoapps/system_wide_roles/admin/__init__.py b/openedx/core/djangoapps/system_wide_roles/admin/__init__.py new file mode 100644 index 0000000000..0856f5b732 --- /dev/null +++ b/openedx/core/djangoapps/system_wide_roles/admin/__init__.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +""" +Django admin integration for system wide roles application. +""" +from django.contrib import admin +from edx_rbac.admin import UserRoleAssignmentAdmin + +from openedx.core.djangoapps.system_wide_roles.admin.forms import SystemWideRoleAssignmentForm +from openedx.core.djangoapps.system_wide_roles.models import SystemWideRoleAssignment + + +@admin.register(SystemWideRoleAssignment) +class SystemWideRoleAssignmentAdmin(UserRoleAssignmentAdmin): + """ + Django admin model for SystemWideRoleAssignment. + """ + search_fields = ('user__email', 'role__name') + + form = SystemWideRoleAssignmentForm + + class Meta(object): + model = SystemWideRoleAssignment diff --git a/openedx/core/djangoapps/system_wide_roles/admin/forms.py b/openedx/core/djangoapps/system_wide_roles/admin/forms.py new file mode 100644 index 0000000000..7b0f8b93b9 --- /dev/null +++ b/openedx/core/djangoapps/system_wide_roles/admin/forms.py @@ -0,0 +1,9 @@ +""" +Forms used for system wide roles admin. +""" + +from edx_rbac.admin import UserRoleAssignmentAdminForm + + +class SystemWideRoleAssignmentForm(UserRoleAssignmentAdminForm): + pass diff --git a/openedx/core/djangoapps/system_wide_roles/constants.py b/openedx/core/djangoapps/system_wide_roles/constants.py new file mode 100644 index 0000000000..439fd49d74 --- /dev/null +++ b/openedx/core/djangoapps/system_wide_roles/constants.py @@ -0,0 +1,5 @@ +""" +System wide roles application constants. +""" + +STUDENT_SUPPORT_ADMIN_ROLE = 'student_support_admin' diff --git a/openedx/core/djangoapps/system_wide_roles/migrations/0002_add_system_wide_student_support_role.py b/openedx/core/djangoapps/system_wide_roles/migrations/0002_add_system_wide_student_support_role.py new file mode 100644 index 0000000000..07cdfc96ab --- /dev/null +++ b/openedx/core/djangoapps/system_wide_roles/migrations/0002_add_system_wide_student_support_role.py @@ -0,0 +1,32 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.22 on 2019-07-11 11:26 +from __future__ import unicode_literals + +from django.db import migrations + +from openedx.core.djangoapps.system_wide_roles.constants import STUDENT_SUPPORT_ADMIN_ROLE + + +def create_roles(apps, schema_editor): + """Create the system wide student support roles if they do not already exist.""" + SystemWideRole = apps.get_model('system_wide_roles', 'SystemWideRole') + SystemWideRole.objects.update_or_create(name=STUDENT_SUPPORT_ADMIN_ROLE) + + +def delete_roles(apps, schema_editor): + """Delete the system wide student support roles.""" + SystemWideRole = apps.get_model('system_wide_roles', 'SystemWideRole') + SystemWideRole.objects.filter( + name=STUDENT_SUPPORT_ADMIN_ROLE + ).delete() + + +class Migration(migrations.Migration): + + dependencies = [ + ('system_wide_roles', '0001_SystemWideRole_SystemWideRoleAssignment'), + ] + + operations = [ + migrations.RunPython(create_roles, delete_roles) + ]