Esempio n. 1
0
    def handle(self, *args, **options):
        course = get_course_by_id(CourseKey.from_string(options['course']))

        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']:
                num = int(options['delete'][0])
                if num < 3:
                    raise CommandError("Tabs 1 and 2 cannot be changed.")

                if query_yes_no(f'Deleting tab {num} Confirm?', default='no'):
                    tabs.primitive_delete(course,
                                          num - 1)  # -1 for 0-based indexing
            elif options['insert']:
                num, tab_type, name = options['insert']
                num = int(num)
                if num < 3:
                    raise CommandError("Tabs 1 and 2 cannot be changed.")

                if query_yes_no(
                        f'Inserting tab {num} "{tab_type}" "{name}" Confirm?',
                        default='no'):
                    tabs.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)  # lint-amnesty, pylint: disable=raise-missing-from
Esempio n. 2
0
 def test_delete(self):
     """Test primitive tab deletion."""
     course = CourseFactory.create()
     with self.assertRaises(ValueError):
         tabs.primitive_delete(course, 0)
     with self.assertRaises(ValueError):
         tabs.primitive_delete(course, 1)
     with self.assertRaises(IndexError):
         tabs.primitive_delete(course, 7)
     tabs.primitive_delete(course, 2)
     self.assertNotIn({u'type': u'textbooks'}, course.tabs)
     # Check that discussion has shifted up
     self.assertEqual(course.tabs[2], {'type': 'discussion', 'name': 'Discussion'})
Esempio n. 3
0
 def test_delete(self):
     """Test primitive tab deletion."""
     course = CourseFactory.create()
     with self.assertRaises(ValueError):
         tabs.primitive_delete(course, 0)
     with self.assertRaises(ValueError):
         tabs.primitive_delete(course, 1)
     with self.assertRaises(IndexError):
         tabs.primitive_delete(course, 7)
     assert course.tabs[2] != {'type': 'discussion', 'name': 'Discussion'}
     tabs.primitive_delete(course, 2)
     assert {'type': 'progress'} not in course.tabs
     # Check that discussion has shifted up
     assert course.tabs[2] == {'type': 'discussion', 'name': 'Discussion'}