Merge pull request #2196 from carsongee/cg/forum_roles_on_import_command
Adding missing forum permissions seeding routine to xml_import
This commit is contained in:
@@ -3,6 +3,8 @@ Script for importing courseware from XML format
|
||||
"""
|
||||
|
||||
from django.core.management.base import BaseCommand, CommandError, make_option
|
||||
from django_comment_common.utils import (seed_permissions_roles,
|
||||
are_permissions_roles_seeded)
|
||||
from xmodule.modulestore.xml_importer import import_from_xml
|
||||
from xmodule.modulestore.django import modulestore
|
||||
from xmodule.contentstore.django import contentstore
|
||||
@@ -42,5 +44,14 @@ class Command(BaseCommand):
|
||||
'default\n')
|
||||
mstore = modulestore('default')
|
||||
|
||||
import_from_xml(mstore, data_dir, course_dirs, load_error_modules=False,
|
||||
static_content_store=contentstore(), verbose=True, do_import_static=do_import_static)
|
||||
_, course_items = import_from_xml(
|
||||
mstore, data_dir, course_dirs, load_error_modules=False,
|
||||
static_content_store=contentstore(), verbose=True,
|
||||
do_import_static=do_import_static
|
||||
)
|
||||
|
||||
for module in course_items:
|
||||
course_id = module.location.course_id
|
||||
if not are_permissions_roles_seeded(course_id):
|
||||
self.stdout.write('Seeding forum roles for course {0}'.format(course_id))
|
||||
seed_permissions_roles(course_id)
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
"""
|
||||
Unittests for importing a course via management command
|
||||
"""
|
||||
|
||||
import os
|
||||
from path import path
|
||||
import shutil
|
||||
import tempfile
|
||||
|
||||
from django.core.management import call_command
|
||||
from django.test.utils import override_settings
|
||||
|
||||
from contentstore.tests.modulestore_config import TEST_MODULESTORE
|
||||
from django_comment_common.utils import are_permissions_roles_seeded
|
||||
from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase
|
||||
|
||||
|
||||
@override_settings(MODULESTORE=TEST_MODULESTORE)
|
||||
class TestImport(ModuleStoreTestCase):
|
||||
"""
|
||||
Unit tests for importing a course from command line
|
||||
"""
|
||||
|
||||
COURSE_ID = ['EDx', '0.00x', '2013_Spring', ]
|
||||
|
||||
def setUp(self):
|
||||
"""
|
||||
Build course XML for importing
|
||||
"""
|
||||
super(TestImport, self).setUp()
|
||||
self.content_dir = path(tempfile.mkdtemp())
|
||||
self.addCleanup(shutil.rmtree, self.content_dir)
|
||||
|
||||
# Create good course xml
|
||||
self.good_dir = tempfile.mkdtemp(dir=self.content_dir)
|
||||
os.makedirs(os.path.join(self.good_dir, "course"))
|
||||
with open(os.path.join(self.good_dir, "course.xml"), "w+") as f:
|
||||
f.write('<course url_name="{0[2]}" org="{0[0]}" '
|
||||
'course="{0[1]}"/>'.format(self.COURSE_ID))
|
||||
|
||||
with open(os.path.join(self.good_dir, "course", "{0[2]}.xml".format(self.COURSE_ID)), "w+") as f:
|
||||
f.write('<course></course>')
|
||||
|
||||
def test_forum_seed(self):
|
||||
"""
|
||||
Tests that forum roles were created with import.
|
||||
"""
|
||||
self.assertFalse(are_permissions_roles_seeded('/'.join(self.COURSE_ID)))
|
||||
call_command('import', self.content_dir, self.good_dir)
|
||||
self.assertTrue(are_permissions_roles_seeded('/'.join(self.COURSE_ID)))
|
||||
Reference in New Issue
Block a user