Commit 42f71156 by cahrens

Script for making all instructors content creators.

parent 6e357db2
...@@ -205,3 +205,10 @@ def is_user_in_creator_group(user): ...@@ -205,3 +205,10 @@ def is_user_in_creator_group(user):
return user.groups.filter(name=COURSE_CREATOR_GROUP_NAME).count() > 0 return user.groups.filter(name=COURSE_CREATOR_GROUP_NAME).count() > 0
return True return True
def _grant_instructors_creator_access(caller):
for group in Group.objects.all():
if group.name.startswith(INSTRUCTOR_ROLE_NAME + "_"):
for user in group.user_set.all():
add_user_to_creator_group(caller, user)
...@@ -9,7 +9,7 @@ from django.core.exceptions import PermissionDenied ...@@ -9,7 +9,7 @@ from django.core.exceptions import PermissionDenied
from auth.authz import add_user_to_creator_group, remove_user_from_creator_group, is_user_in_creator_group,\ from auth.authz import add_user_to_creator_group, remove_user_from_creator_group, is_user_in_creator_group,\
create_all_course_groups, add_user_to_course_group, STAFF_ROLE_NAME, INSTRUCTOR_ROLE_NAME,\ create_all_course_groups, add_user_to_course_group, STAFF_ROLE_NAME, INSTRUCTOR_ROLE_NAME,\
is_user_in_course_group_role, remove_user_from_course_group is_user_in_course_group_role, remove_user_from_course_group, _grant_instructors_creator_access
class CreatorGroupTest(TestCase): class CreatorGroupTest(TestCase):
...@@ -174,3 +174,33 @@ class CourseGroupTest(TestCase): ...@@ -174,3 +174,33 @@ class CourseGroupTest(TestCase):
create_all_course_groups(self.creator, self.location) create_all_course_groups(self.creator, self.location)
with self.assertRaises(PermissionDenied): with self.assertRaises(PermissionDenied):
remove_user_from_course_group(self.staff, self.staff, self.location, STAFF_ROLE_NAME) remove_user_from_course_group(self.staff, self.staff, self.location, STAFF_ROLE_NAME)
class GrantInstructorsCreatorAccessTest(TestCase):
def create_course(self, index):
creator = User.objects.create_user('testcreator'+str(index), 'testcreator+courses@edx.org', 'foo')
staff = User.objects.create_user('teststaff'+str(index), 'teststaff+courses@edx.org', 'foo')
location = 'i4x', 'mitX', str(index), 'course', 'test'
create_all_course_groups(creator, location)
add_user_to_course_group(creator, staff, location, STAFF_ROLE_NAME)
return [creator, staff]
def test_grant_creator_access(self):
[creator1, staff1] = self.create_course(1)
[creator2, staff2] = self.create_course(2)
with mock.patch.dict('django.conf.settings.MITX_FEATURES', {"ENABLE_CREATOR_GROUP": True}):
self.assertFalse(is_user_in_creator_group(creator1))
self.assertFalse(is_user_in_creator_group(creator2))
self.assertFalse(is_user_in_creator_group(staff1))
self.assertFalse(is_user_in_creator_group(staff2))
admin = User.objects.create_user('populate_creators_command', 'grant+creator+access@edx.org', 'foo')
admin.is_staff = True
_grant_instructors_creator_access(admin)
_grant_instructors_creator_access(admin)
self.assertTrue(is_user_in_creator_group(creator1))
self.assertTrue(is_user_in_creator_group(creator2))
self.assertFalse(is_user_in_creator_group(staff1))
self.assertFalse(is_user_in_creator_group(staff2))
from auth.authz import _grant_instructors_creator_access
from django.core.management.base import BaseCommand
from django.contrib.auth.models import User
class Command(BaseCommand):
help = 'Grants all users with INSTRUCTOR role permission to create courses'
def handle(self, *args, **options):
admin = User.objects.create_user('populate_creators_command', 'grant+creator+access@edx.org', 'foo')
admin.is_staff = True
_grant_instructors_creator_access(admin)
admin.delete()
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment