Added django commands to get statistics and repost submissions to grader for open ended problems.
ORA-286
This commit is contained in:
@@ -4,7 +4,7 @@ from lxml import etree
|
||||
from pkg_resources import resource_string
|
||||
|
||||
from xmodule.raw_module import RawDescriptor
|
||||
from .x_module import XModule
|
||||
from .x_module import XModule, module_attr
|
||||
from xblock.fields import Integer, Scope, String, List, Float, Boolean
|
||||
from xmodule.open_ended_grading_classes.combined_open_ended_modulev1 import CombinedOpenEndedV1Module, CombinedOpenEndedV1Descriptor
|
||||
from collections import namedtuple
|
||||
@@ -510,3 +510,7 @@ class CombinedOpenEndedDescriptor(CombinedOpenEndedFields, RawDescriptor):
|
||||
non_editable_fields.extend([CombinedOpenEndedDescriptor.due, CombinedOpenEndedDescriptor.graceperiod,
|
||||
CombinedOpenEndedDescriptor.markdown, CombinedOpenEndedDescriptor.version, CombinedOpenEndedDescriptor.track_changes])
|
||||
return non_editable_fields
|
||||
|
||||
# Proxy to CombinedOpenEndedModule so that external callers don't have to know if they're working
|
||||
# with a module or a descriptor
|
||||
child_module = module_attr('child_module')
|
||||
|
||||
@@ -363,6 +363,32 @@ class CombinedOpenEndedV1Module():
|
||||
last_completed_child = next((i for i, child in reversed(list(enumerate(children))) if child['child_state'] == self.DONE), 0)
|
||||
self.current_task_number = min(last_completed_child + 1, len(best_task_states) - 1)
|
||||
|
||||
def create_task(self, task_state, task_xml):
|
||||
"""Create task object for given task state and task xml."""
|
||||
|
||||
tag_name = self.get_tag_name(task_xml)
|
||||
children = self.child_modules()
|
||||
task_descriptor = children['descriptors'][tag_name](self.system)
|
||||
task_parsed_xml = task_descriptor.definition_from_xml(etree.fromstring(task_xml), self.system)
|
||||
task = children['modules'][tag_name](
|
||||
self.system,
|
||||
self.location,
|
||||
task_parsed_xml,
|
||||
task_descriptor,
|
||||
self.static_data,
|
||||
instance_state=task_state,
|
||||
)
|
||||
return task
|
||||
|
||||
def get_task_number(self, task_number):
|
||||
"""Return task object at task_index."""
|
||||
|
||||
task_states_count = len(self.task_states)
|
||||
if task_states_count > 0 and task_number < task_states_count:
|
||||
task_state = self.task_states[task_number]
|
||||
task_xml = self.task_xml[task_number]
|
||||
return self.create_task(task_state, task_xml)
|
||||
return None
|
||||
|
||||
def reset_task_state(self, message=""):
|
||||
"""
|
||||
|
||||
@@ -18,6 +18,7 @@ from webob.multidict import MultiDict
|
||||
|
||||
from xmodule.open_ended_grading_classes.openendedchild import OpenEndedChild
|
||||
from xmodule.open_ended_grading_classes.open_ended_module import OpenEndedModule
|
||||
from xmodule.open_ended_grading_classes.self_assessment_module import SelfAssessmentModule
|
||||
from xmodule.open_ended_grading_classes.combined_open_ended_modulev1 import CombinedOpenEndedV1Module
|
||||
from xmodule.open_ended_grading_classes.grading_service_module import GradingServiceError
|
||||
from xmodule.combined_open_ended_module import CombinedOpenEndedModule
|
||||
@@ -500,6 +501,27 @@ class CombinedOpenEndedModuleTest(unittest.TestCase):
|
||||
self.assertEqual(response_dict['max_score'], self.max_score)
|
||||
self.assertEqual(response_dict['state'], CombinedOpenEndedV1Module.INITIAL)
|
||||
|
||||
def test_create_task(self):
|
||||
combinedoe = self.generate_oe_module(TEST_STATE_AI, 1, [self.task_xml1, self.task_xml2])
|
||||
|
||||
first_task = combinedoe.create_task(combinedoe.task_states[0], combinedoe.task_xml[0])
|
||||
self.assertIsInstance(first_task, SelfAssessmentModule)
|
||||
|
||||
second_task = combinedoe.create_task(combinedoe.task_states[1], combinedoe.task_xml[1])
|
||||
self.assertIsInstance(second_task, OpenEndedModule)
|
||||
|
||||
def test_get_task_number(self):
|
||||
combinedoe = self.generate_oe_module(TEST_STATE_AI, 1, [self.task_xml1, self.task_xml2])
|
||||
|
||||
first_task = combinedoe.get_task_number(0)
|
||||
self.assertIsInstance(first_task, SelfAssessmentModule)
|
||||
|
||||
second_task = combinedoe.get_task_number(1)
|
||||
self.assertIsInstance(second_task, OpenEndedModule)
|
||||
|
||||
third_task = combinedoe.get_task_number(2)
|
||||
self.assertIsNone(third_task)
|
||||
|
||||
def test_update_task_states(self):
|
||||
"""
|
||||
See if we can update the task states properly
|
||||
|
||||
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user