def handle_item_deleted(**kwargs): """ Receives the item_deleted signal sent by Studio when an XBlock is removed from the course structure and removes any gating milestone data associated with it or its descendants. Arguments: kwargs (dict): Contains the content usage key of the item deleted Returns: None """ usage_key = kwargs.get('usage_key') if usage_key: # Strip branch info usage_key = usage_key.for_branch(None) course_key = usage_key.course_key deleted_module = modulestore().get_item(usage_key) for module in yield_dynamic_descriptor_descendants( deleted_module, kwargs.get('user_id')): # Remove prerequisite milestone data gating_api.remove_prerequisite(module.location) # Remove any 'requires' course content milestone relationships gating_api.set_required_content(course_key, module.location, None, None, None)
def test_prerequisites(self): """ Test test_prerequisites """ gating_api.add_prerequisite(self.course.id, self.seq1.location) prereqs = gating_api.get_prerequisites(self.course.id) self.assertEqual(len(prereqs), 1) self.assertEqual(prereqs[0]['block_display_name'], self.seq1.display_name) self.assertEqual(prereqs[0]['block_usage_key'], unicode(self.seq1.location)) self.assertTrue(gating_api.is_prerequisite(self.course.id, self.seq1.location)) gating_api.remove_prerequisite(self.seq1.location) self.assertEqual(len(gating_api.get_prerequisites(self.course.id)), 0) self.assertFalse(gating_api.is_prerequisite(self.course.id, self.seq1.location))
def test_prerequisites(self): """ Test test_prerequisites """ gating_api.add_prerequisite(self.course.id, self.seq1.location) prereqs = gating_api.get_prerequisites(self.course.id) assert len(prereqs) == 1 assert prereqs[0]['block_display_name'] == self.seq1.display_name assert prereqs[0]['block_usage_key'] == str(self.seq1.location) assert gating_api.is_prerequisite(self.course.id, self.seq1.location) gating_api.remove_prerequisite(self.seq1.location) assert len(gating_api.get_prerequisites(self.course.id)) == 0 assert not gating_api.is_prerequisite(self.course.id, self.seq1.location)
def handle_item_deleted(**kwargs): """ Receives the item_deleted signal sent by Studio when an XBlock is removed from the course structure and removes any gating milestone data associated with it or its descendants. Arguments: kwargs (dict): Contains the content usage key of the item deleted Returns: None """ usage_key = kwargs.get('usage_key') if usage_key: # Strip branch info usage_key = usage_key.for_branch(None) course_key = usage_key.course_key deleted_module = modulestore().get_item(usage_key) for module in yield_dynamic_descriptor_descendants(deleted_module, kwargs.get('user_id')): # Remove prerequisite milestone data gating_api.remove_prerequisite(module.location) # Remove any 'requires' course content milestone relationships gating_api.set_required_content(course_key, module.location, None, None)