Ejemplo n.º 1
0
 def test_forum_seed(self):
     """
     Tests that forum roles were created with import.
     """
     self.assertFalse(are_permissions_roles_seeded('/'.join(self.BASE_COURSE_ID)))
     call_command('import', self.content_dir, self.good_dir)
     self.assertTrue(are_permissions_roles_seeded('/'.join(self.BASE_COURSE_ID)))
Ejemplo n.º 2
0
 def test_forum_seed(self):
     """
     Tests that forum roles were created with import.
     """
     self.assertFalse(are_permissions_roles_seeded(self.base_course_key))
     call_command('import', self.content_dir, self.good_dir)
     self.assertTrue(are_permissions_roles_seeded(self.base_course_key))
Ejemplo n.º 3
0
 def test_forum_seed(self):
     """
     Tests that forum roles were created with import.
     """
     self.assertFalse(are_permissions_roles_seeded(self.BASE_COURSE_KEY))
     call_command('import', self.content_dir, self.good_dir)
     self.assertTrue(are_permissions_roles_seeded(self.BASE_COURSE_KEY))
Ejemplo n.º 4
0
    def handle(self, *args, **options):
        "Execute the command"
        if len(args) == 0:
            raise CommandError("import requires at least one argument: <data directory> [--nostatic] [<course dir>...]")

        data_dir = args[0]
        do_import_static = not (options.get('nostatic', False))
        if len(args) > 1:
            course_dirs = args[1:]
        else:
            course_dirs = None
        self.stdout.write("Importing.  Data_dir={data}, course_dirs={courses}\n".format(
            data=data_dir,
            courses=course_dirs,
            dis=do_import_static))
        try:
            mstore = modulestore('direct')
        except KeyError:
            self.stdout.write('Unable to load direct modulestore, trying '
                              'default\n')
            mstore = modulestore('default')

        _, 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,
            create_new_course_if_not_present=True,
        )

        for course in course_items:
            course_id = course.id
            if not are_permissions_roles_seeded(course_id):
                self.stdout.write('Seeding forum roles for course {0}\n'.format(course_id))
                seed_permissions_roles(course_id)
Ejemplo n.º 5
0
 def test_create_course_check_forum_seeding(self):
     """Test new course creation and verify forum seeding """
     resp = self.client.post(reverse('create_new_course'), self.course_data)
     self.assertEqual(resp.status_code, 200)
     data = parse_json(resp)
     self.assertEqual(data['id'], 'i4x://MITx/999/course/Robot_Super_Course')
     self.assertTrue(are_permissions_roles_seeded('MITx/999/Robot_Super_Course'))
Ejemplo n.º 6
0
    def handle(self, *args, **options):
        "Execute the command"
        if len(args) == 0:
            raise CommandError("import requires at least one argument: <data directory> [--nostatic] [<course dir>...]")

        data_dir = args[0]
        do_import_static = not options.get('nostatic', False)
        if len(args) > 1:
            source_dirs = args[1:]
        else:
            source_dirs = None
        self.stdout.write("Importing.  Data_dir={data}, source_dirs={courses}\n".format(
            data=data_dir,
            courses=source_dirs,
        ))
        mstore = modulestore()

        course_items = import_course_from_xml(
            mstore, ModuleStoreEnum.UserID.mgmt_command, data_dir, source_dirs, load_error_modules=False,
            static_content_store=contentstore(), verbose=True,
            do_import_static=do_import_static,
            create_if_not_present=True,
        )

        for course in course_items:
            course_id = course.id
            if not are_permissions_roles_seeded(course_id):
                self.stdout.write('Seeding forum roles for course {0}\n'.format(course_id))
                seed_permissions_roles(course_id)
Ejemplo n.º 7
0
    def handle(self, *args, **options):
        data_dir = options['data_directory']
        do_import_static = not options['nostatic']
        source_dirs = options['course_dirs']
        if len(source_dirs) == 0:
            source_dirs = None

        self.stdout.write(
            "Importing.  Data_dir={data}, source_dirs={courses}\n".format(
                data=data_dir,
                courses=source_dirs,
            ))
        mstore = modulestore()

        course_items = import_course_from_xml(
            mstore,
            ModuleStoreEnum.UserID.mgmt_command,
            data_dir,
            source_dirs,
            load_error_modules=False,
            static_content_store=contentstore(),
            verbose=True,
            do_import_static=do_import_static,
            create_if_not_present=True,
        )

        for course in course_items:
            course_id = course.id
            if not are_permissions_roles_seeded(course_id):
                self.stdout.write(
                    'Seeding forum roles for course {0}\n'.format(course_id))
                seed_permissions_roles(course_id)
Ejemplo n.º 8
0
    def handle(self, *args, **options):
        "Execute the command"
        if len(args) == 0:
            raise CommandError("import requires at least one argument: <data directory> [--nostatic] [<course dir>...]")

        data_dir = args[0]
        do_import_static = not (options.get('nostatic', False))
        if len(args) > 1:
            course_dirs = args[1:]
        else:
            course_dirs = None
        self.stdout.write("Importing.  Data_dir={data}, course_dirs={courses}\n".format(
            data=data_dir,
            courses=course_dirs,
            dis=do_import_static))
        try:
            mstore = modulestore('direct')
        except KeyError:
            self.stdout.write('Unable to load direct modulestore, trying '
                              'default\n')
            mstore = modulestore('default')

        _, 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}\n'.format(course_id))
                seed_permissions_roles(course_id)
Ejemplo n.º 9
0
def import_single_course(filename):
    print >> sys.stderr, 'IMPORTING course:', filename
    course_id, course_run = _filename_to_id_and_run(filename)

    course_full_id = 'course-v1:Microsoft+{id}+{run}'.format(id=course_id,
                                                             run=course_run)

    course_xml_dir = path.join(
        XML_EXTRACT_DIR, '{id}-{run}'.format(id=course_id, run=course_run))
    mkdir(course_xml_dir)

    subprocess.call(['tar', '-xzf', filename, '-C', course_xml_dir])

    _fix_library_source_bug(course_xml_dir)

    print >> sys.stderr, 'IMPORTING course:', course_full_id
    course_items = import_course_from_xml(
        store=MOD_STORE,
        user_id=ModuleStoreEnum.UserID.mgmt_command,
        data_dir=DATA_DIR,
        source_dirs=[path.join(course_xml_dir,
                               'course')],  # Open edX needs `course` dir
        load_error_modules=False,
        static_content_store=contentstore(),
        verbose=True,
        do_import_static=True,
        target_id=CourseKey.from_string(course_full_id),
        create_if_not_present=True,
    )

    for course in course_items:
        course_id = course.id
        if not are_permissions_roles_seeded(course_id):
            print >> sys.stderr, 'Seeding forum roles for course', course_id
            seed_permissions_roles(course_id)
Ejemplo n.º 10
0
    def handle(self, *args, **options):
        data_dir = options['data_directory']
        source_dirs = options['course_dirs']
        if len(source_dirs) == 0:
            source_dirs = None
        do_import_static = not options.get('nostatic', False)
        # If the static content is not skipped, the python lib should be imported regardless
        # of the 'nopythonlib' flag.
        do_import_python_lib = do_import_static or not options.get(
            'nopythonlib', False)
        python_lib_filename = options.get('python_lib_filename')

        output = ("Importing...\n"
                  "    data_dir={data}, source_dirs={courses}\n"
                  "    Importing static content? {import_static}\n"
                  "    Importing python lib? {import_python_lib}").format(
                      data=data_dir,
                      courses=source_dirs,
                      import_static=do_import_static,
                      import_python_lib=do_import_python_lib)
        self.stdout.write(output)
        mstore = modulestore()

        course_items = import_course_from_xml(
            mstore,
            ModuleStoreEnum.UserID.mgmt_command,
            data_dir,
            source_dirs,
            load_error_modules=False,
            static_content_store=contentstore(),
            verbose=True,
            do_import_static=do_import_static,
            do_import_python_lib=do_import_python_lib,
            create_if_not_present=True,
            python_lib_filename=python_lib_filename,
        )

        for course in course_items:
            course_id = course.id
            if not are_permissions_roles_seeded(course_id):
                self.stdout.write(
                    'Seeding forum roles for course {0}\n'.format(course_id))
                seed_permissions_roles(course_id)
Ejemplo n.º 11
0
    def handle(self, *args, **options):
        "Execute the command"
        if len(args) == 0:
            raise CommandError(
                "import requires at least one argument: <data directory> [--nostatic] [<course dir>...]"
            )

        data_dir = args[0]
        do_import_static = not (options.get('nostatic', False))
        if len(args) > 1:
            source_dirs = args[1:]
        else:
            source_dirs = None
        self.stdout.write(
            "Importing.  Data_dir={data}, source_dirs={courses}\n".format(
                data=data_dir,
                courses=source_dirs,
            ))
        mstore = modulestore()

        course_items = import_course_from_xml(
            mstore,
            ModuleStoreEnum.UserID.mgmt_command,
            data_dir,
            source_dirs,
            load_error_modules=False,
            static_content_store=contentstore(),
            verbose=True,
            do_import_static=do_import_static,
            create_if_not_present=True,
        )

        for course in course_items:
            course_id = course.id
            if not are_permissions_roles_seeded(course_id):
                self.stdout.write(
                    'Seeding forum roles for course {0}\n'.format(course_id))
                seed_permissions_roles(course_id)
Ejemplo n.º 12
0
    def handle(self, *args, **options):
        data_dir = options['data_directory']
        source_dirs = options['course_dirs']
        if len(source_dirs) == 0:
            source_dirs = None
        do_import_static = not options.get('nostatic', False)
        # If the static content is not skipped, the python lib should be imported regardless
        # of the 'nopythonlib' flag.
        do_import_python_lib = do_import_static or not options.get('nopythonlib', False)
        python_lib_filename = options.get('python_lib_filename')

        output = (
            "Importing...\n"
            "    data_dir={data}, source_dirs={courses}\n"
            "    Importing static content? {import_static}\n"
            "    Importing python lib? {import_python_lib}"
        ).format(
            data=data_dir,
            courses=source_dirs,
            import_static=do_import_static,
            import_python_lib=do_import_python_lib
        )
        self.stdout.write(output)
        mstore = modulestore()

        course_items = import_course_from_xml(
            mstore, ModuleStoreEnum.UserID.mgmt_command, data_dir, source_dirs, load_error_modules=False,
            static_content_store=contentstore(), verbose=True,
            do_import_static=do_import_static, do_import_python_lib=do_import_python_lib,
            create_if_not_present=True,
            python_lib_filename=python_lib_filename,
        )

        for course in course_items:
            course_id = course.id
            if not are_permissions_roles_seeded(course_id):
                self.stdout.write('Seeding forum roles for course {0}\n'.format(course_id))
                seed_permissions_roles(course_id)