Ejemplo n.º 1
0
    def handle(self, *args, **options):
        if not options['course']:
            raise CommandError(Command.course_option.help)

        try:
            course_key = CourseKey.from_string(options['course'])
        except InvalidKeyError:
            course_key = SlashSeparatedCourseKey.from_deprecated_string(options['course'])

        course = get_course_by_id(course_key)

        print 'Warning: this command directly edits the list of course tabs in mongo.'
        print 'Tabs before any changes:'
        print_course(course)

        try:
            if options['delete']:
                if len(args) != 1:
                    raise CommandError(Command.delete_option.help)
                num = int(args[0])
                if query_yes_no('Deleting tab {0} Confirm?'.format(num), default='no'):
                    primitive_delete(course, num - 1)  # -1 for 0-based indexing
            elif options['insert']:
                if len(args) != 3:
                    raise CommandError(Command.insert_option.help)
                num = int(args[0])
                tab_type = args[1]
                name = args[2]
                if query_yes_no('Inserting tab {0} "{1}" "{2}" Confirm?'.format(num, tab_type, name), default='no'):
                    primitive_insert(course, num - 1, tab_type, name)  # -1 as above
        except ValueError as e:
            # Cute: translate to CommandError so the CLI error prints nicely.
            raise CommandError(e)
Ejemplo n.º 2
0
def insert_tab(course_id, args):
    """Inserts the specified tab into the list of tabs for this course"""

    try:
        course_key = locator.CourseLocator.from_string(course_id)
        course = get_course_by_id(course_key)
    except InvalidKeyError:
        message = _('Error - Invalid Course ID')
        return message
    args = [arg.strip() for arg in args.split(",")]
    if len(args) != 3:
        message = _('Error - Invalid number of arguments. Expecting [tab-number], [tab-type], [tab-name]')
        return message
    try:
        tab_number = int(args[0])
        tab_type = args[1]
        tab_name = args[2]
    except ValueError:
        message = _('Error - Invalid arguments. Expecting [tab-number], [tab-type], [tab-name]')
        return message
    try:
        primitive_insert(course, tab_number - 1, tab_type, tab_name)  # -1 as above
        message = _("Tab {tab_number}, {tab_type}, {tab_name} for course {course_key} successfully created".format(
            tab_number=tab_number,
            tab_type=tab_type,
            tab_name=tab_name,
            course_key=course_key,
        ))
    except (ValueError, InvalidTabsException) as error:
        message = _("Command Failed - {msg}".format(
            msg=error,
        ))
    return message
Ejemplo n.º 3
0
 def test_insert(self):
     """Test primitive tab insertion."""
     course = CourseFactory.create()
     primitive_insert(course, 2, 'notes', 'aname')
     self.assertEquals(course.tabs[2], {'type': 'notes', 'name': 'aname'})
     with self.assertRaises(ValueError):
         primitive_insert(course, 0, 'notes', 'aname')
     with self.assertRaises(ValueError):
         primitive_insert(course, 3, 'static_tab', 'aname')
Ejemplo n.º 4
0
 def test_save(self):
     """Test course saving."""
     course = CourseFactory.create()
     primitive_insert(course, 3, 'notes', 'aname')
     course2 = modulestore().get_course(course.id)
     self.assertEquals(course2.tabs[3], {'type': 'notes', 'name': 'aname'})