Commit 41be20a0 by Chris Dodge

define a unseeding forums permissions and call into it from delete_course

define a unseeding forums permissions and call into it from delete_course

define a unseeding forums permissions and call into it from delete_course
parent 2677598a
...@@ -7,6 +7,7 @@ from xmodule.modulestore.django import modulestore ...@@ -7,6 +7,7 @@ from xmodule.modulestore.django import modulestore
from xmodule.contentstore.django import contentstore from xmodule.contentstore.django import contentstore
from xmodule.course_module import CourseDescriptor from xmodule.course_module import CourseDescriptor
from .prompt import query_yes_no from .prompt import query_yes_no
from django_comment_common.utils import unseed_permissions_roles
from auth.authz import _delete_course_group from auth.authz import _delete_course_group
...@@ -40,6 +41,9 @@ class Command(BaseCommand): ...@@ -40,6 +41,9 @@ class Command(BaseCommand):
if query_yes_no("Are you sure. This action cannot be undone!", default="no"): if query_yes_no("Are you sure. This action cannot be undone!", default="no"):
loc = CourseDescriptor.id_to_location(course_id) loc = CourseDescriptor.id_to_location(course_id)
if delete_course(ms, cs, loc, commit): if delete_course(ms, cs, loc, commit):
print 'removing forums permissions and roles...'
unseed_permissions_roles(course_id)
print 'removing User permissions from course....' print 'removing User permissions from course....'
# in the django layer, we need to remove all the user permissions groups associated with this course # in the django layer, we need to remove all the user permissions groups associated with this course
if commit: if commit:
......
...@@ -55,6 +55,8 @@ from uuid import uuid4 ...@@ -55,6 +55,8 @@ from uuid import uuid4
from pymongo import MongoClient from pymongo import MongoClient
from student.models import CourseEnrollment from student.models import CourseEnrollment
from django_comment_common.utils import unseed_permissions_roles
TEST_DATA_CONTENTSTORE = copy.deepcopy(settings.CONTENTSTORE) TEST_DATA_CONTENTSTORE = copy.deepcopy(settings.CONTENTSTORE)
TEST_DATA_CONTENTSTORE['OPTIONS']['db'] = 'test_xcontent_%s' % uuid4().hex TEST_DATA_CONTENTSTORE['OPTIONS']['db'] = 'test_xcontent_%s' % uuid4().hex
...@@ -1292,6 +1294,12 @@ class ContentStoreTest(ModuleStoreTestCase): ...@@ -1292,6 +1294,12 @@ class ContentStoreTest(ModuleStoreTestCase):
test_course_data = self.assert_created_course(number_suffix=uuid4().hex) test_course_data = self.assert_created_course(number_suffix=uuid4().hex)
self.assertTrue(are_permissions_roles_seeded(self._get_course_id(test_course_data))) self.assertTrue(are_permissions_roles_seeded(self._get_course_id(test_course_data)))
def test_forum_unseeding(self):
"""Test new course creation and verify forum seeding """
test_course_data = self.assert_created_course(number_suffix=uuid4().hex)
unseed_permissions_roles(self._get_course_id(test_course_data))
self.assertFalse(are_permissions_roles_seeded(self._get_course_id(test_course_data)))
def _get_course_id(self, test_course_data): def _get_course_id(self, test_course_data):
"""Returns the course ID (org/number/run).""" """Returns the course ID (org/number/run)."""
return "{org}/{number}/{run}".format(**test_course_data) return "{org}/{number}/{run}".format(**test_course_data)
......
...@@ -32,6 +32,30 @@ def seed_permissions_roles(course_id): ...@@ -32,6 +32,30 @@ def seed_permissions_roles(course_id):
administrator_role.inherit_permissions(moderator_role) administrator_role.inherit_permissions(moderator_role)
def unseed_permissions_roles(course_id):
"""
A utility method to clean up all forum related permissions and roles
"""
administrator_role = Role.objects.get_or_create(name="Administrator", course_id=course_id)[0]
moderator_role = Role.objects.get_or_create(name="Moderator", course_id=course_id)[0]
community_ta_role = Role.objects.get_or_create(name="Community TA", course_id=course_id)[0]
student_role = Role.objects.get_or_create(name="Student", course_id=course_id)[0]
# safety switches in case the casing does not match
if administrator_role.course_id == course_id:
administrator_role.delete()
if moderator_role.course_id == course_id:
moderator_role.delete()
if community_ta_role.course_id == course_id:
community_ta_role.delete()
if student_role.course_id == course_id:
student_role.delete()
def are_permissions_roles_seeded(course_id): def are_permissions_roles_seeded(course_id):
try: try:
......
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