Commit fdf7ea2c by Calen Pennington

Merge pull request #1726 from cpennington/hotfix-fix-OEE-ajax-url

Fix LMS-1493
parents 7a24f203 b4a18403
...@@ -45,7 +45,7 @@ class ABTestModule(ABTestFields, XModule): ...@@ -45,7 +45,7 @@ class ABTestModule(ABTestFields, XModule):
""" """
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
XModule.__init__(self, *args, **kwargs) super(ABTestModule, self).__init__(*args, **kwargs)
if self.group is None: if self.group is None:
self.group = group_from_value( self.group = group_from_value(
......
...@@ -50,7 +50,7 @@ class AnnotatableModule(AnnotatableFields, XModule): ...@@ -50,7 +50,7 @@ class AnnotatableModule(AnnotatableFields, XModule):
icon_class = 'annotatable' icon_class = 'annotatable'
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
XModule.__init__(self, *args, **kwargs) super(AnnotatableModule, self).__init__(*args, **kwargs)
xmltree = etree.fromstring(self.data) xmltree = etree.fromstring(self.data)
......
...@@ -190,7 +190,7 @@ class CapaModule(CapaFields, XModule): ...@@ -190,7 +190,7 @@ class CapaModule(CapaFields, XModule):
""" """
Accepts the same arguments as xmodule.x_module:XModule.__init__ Accepts the same arguments as xmodule.x_module:XModule.__init__
""" """
XModule.__init__(self, *args, **kwargs) super(CapaModule, self).__init__(*args, **kwargs)
due_date = self.due due_date = self.due
......
...@@ -412,7 +412,7 @@ class CombinedOpenEndedModule(CombinedOpenEndedFields, XModule): ...@@ -412,7 +412,7 @@ class CombinedOpenEndedModule(CombinedOpenEndedFields, XModule):
See DEFAULT_DATA for a sample. See DEFAULT_DATA for a sample.
""" """
XModule.__init__(self, *args, **kwargs) super(CombinedOpenEndedModule, self).__init__(*args, **kwargs)
self.system.set('location', self.location) self.system.set('location', self.location)
......
...@@ -75,7 +75,7 @@ class CrowdsourceHinterModule(CrowdsourceHinterFields, XModule): ...@@ -75,7 +75,7 @@ class CrowdsourceHinterModule(CrowdsourceHinterFields, XModule):
js_module_name = "Hinter" js_module_name = "Hinter"
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
XModule.__init__(self, *args, **kwargs) super(CrowdsourceHinterModule, self).__init__(*args, **kwargs)
# We need to know whether we are working with a FormulaResponse problem. # We need to know whether we are working with a FormulaResponse problem.
try: try:
responder = self.get_display_items()[0].lcp.responders.values()[0] responder = self.get_display_items()[0].lcp.responders.values()[0]
......
...@@ -39,7 +39,7 @@ class FolditModule(FolditFields, XModule): ...@@ -39,7 +39,7 @@ class FolditModule(FolditFields, XModule):
required_sublevel_half_credit="3" required_sublevel_half_credit="3"
show_leaderboard="false"/> show_leaderboard="false"/>
""" """
XModule.__init__(self, *args, **kwargs) super(FolditModule, self).__init__(*args, **kwargs)
self.due_time = self.due self.due_time = self.due
def is_complete(self): def is_complete(self):
......
...@@ -93,7 +93,6 @@ class CombinedOpenEndedV1Module(): ...@@ -93,7 +93,6 @@ class CombinedOpenEndedV1Module():
Definition file should have one or many task blocks, a rubric block, and a prompt block. See DEFAULT_DATA in combined_open_ended_module for a sample. Definition file should have one or many task blocks, a rubric block, and a prompt block. See DEFAULT_DATA in combined_open_ended_module for a sample.
""" """
self.instance_state = instance_state self.instance_state = instance_state
self.display_name = instance_state.get('display_name', "Open Ended") self.display_name = instance_state.get('display_name', "Open Ended")
......
...@@ -39,7 +39,7 @@ class RandomizeModule(RandomizeFields, XModule): ...@@ -39,7 +39,7 @@ class RandomizeModule(RandomizeFields, XModule):
modules. modules.
""" """
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
XModule.__init__(self, *args, **kwargs) super(RandomizeModule, self).__init__(*args, **kwargs)
# NOTE: calling self.get_children() creates a circular reference-- # NOTE: calling self.get_children() creates a circular reference--
# it calls get_child_descriptors() internally, but that doesn't work until # it calls get_child_descriptors() internally, but that doesn't work until
......
...@@ -38,7 +38,7 @@ class SequenceModule(SequenceFields, XModule): ...@@ -38,7 +38,7 @@ class SequenceModule(SequenceFields, XModule):
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
XModule.__init__(self, *args, **kwargs) super(SequenceModule, self).__init__(*args, **kwargs)
# if position is specified in system, then use that instead # if position is specified in system, then use that instead
if getattr(self.system, 'position', None) is not None: if getattr(self.system, 'position', None) is not None:
......
...@@ -133,7 +133,6 @@ class CapaFactory(object): ...@@ -133,7 +133,6 @@ class CapaFactory(object):
DictFieldData(field_data), DictFieldData(field_data),
ScopeIds(None, None, location, location), ScopeIds(None, None, location, location),
) )
system.xmodule_instance = module
if correct: if correct:
# TODO: probably better to actually set the internal state properly, but... # TODO: probably better to actually set the internal state properly, but...
......
...@@ -143,7 +143,6 @@ class CHModuleFactory(object): ...@@ -143,7 +143,6 @@ class CHModuleFactory(object):
return capa_module return capa_module
system.get_module = fake_get_module system.get_module = fake_get_module
module = CrowdsourceHinterModule(descriptor, system, DictFieldData(field_data), Mock()) module = CrowdsourceHinterModule(descriptor, system, DictFieldData(field_data), Mock())
system.xmodule_instance = module
return module return module
......
...@@ -41,13 +41,16 @@ class PeerGradingModuleTest(unittest.TestCase, DummyModulestore): ...@@ -41,13 +41,16 @@ class PeerGradingModuleTest(unittest.TestCase, DummyModulestore):
}) })
save_dict.extend(('rubric_scores[]', val) for val in (0, 1)) save_dict.extend(('rubric_scores[]', val) for val in (0, 1))
def get_module_system(self, descriptor):
test_system = get_test_system()
test_system.open_ended_grading_interface = None
return test_system
def setUp(self): def setUp(self):
""" """
Create a peer grading module from a test system Create a peer grading module from a test system
@return: @return:
""" """
self.test_system = get_test_system()
self.test_system.open_ended_grading_interface = None
self.setup_modulestore(COURSE) self.setup_modulestore(COURSE)
self.peer_grading = self.get_module_from_location(self.problem_location, COURSE) self.peer_grading = self.get_module_from_location(self.problem_location, COURSE)
self.coe = self.get_module_from_location(self.coe_location, COURSE) self.coe = self.get_module_from_location(self.coe_location, COURSE)
...@@ -173,13 +176,16 @@ class PeerGradingModuleScoredTest(unittest.TestCase, DummyModulestore): ...@@ -173,13 +176,16 @@ class PeerGradingModuleScoredTest(unittest.TestCase, DummyModulestore):
["i4x", "edX", "open_ended", "peergrading", "PeerGradingScored"] ["i4x", "edX", "open_ended", "peergrading", "PeerGradingScored"]
) )
def get_module_system(self, descriptor):
test_system = get_test_system()
test_system.open_ended_grading_interface = None
return test_system
def setUp(self): def setUp(self):
""" """
Create a peer grading module from a test system Create a peer grading module from a test system
@return: @return:
""" """
self.test_system = get_test_system()
self.test_system.open_ended_grading_interface = None
self.setup_modulestore(COURSE) self.setup_modulestore(COURSE)
def test_metadata_load(self): def test_metadata_load(self):
...@@ -213,12 +219,15 @@ class PeerGradingModuleLinkedTest(unittest.TestCase, DummyModulestore): ...@@ -213,12 +219,15 @@ class PeerGradingModuleLinkedTest(unittest.TestCase, DummyModulestore):
coe_location = Location(["i4x", "edX", "open_ended", "combinedopenended", coe_location = Location(["i4x", "edX", "open_ended", "combinedopenended",
"SampleQuestion"]) "SampleQuestion"])
def get_module_system(self, descriptor):
test_system = get_test_system()
test_system.open_ended_grading_interface = None
return test_system
def setUp(self): def setUp(self):
""" """
Create a peer grading module from a test system. Create a peer grading module from a test system.
""" """
self.test_system = get_test_system()
self.test_system.open_ended_grading_interface = None
self.setup_modulestore(COURSE) self.setup_modulestore(COURSE)
@property @property
...@@ -270,14 +279,15 @@ class PeerGradingModuleLinkedTest(unittest.TestCase, DummyModulestore): ...@@ -270,14 +279,15 @@ class PeerGradingModuleLinkedTest(unittest.TestCase, DummyModulestore):
else: else:
pg_descriptor.get_required_module_descriptors = lambda: [] pg_descriptor.get_required_module_descriptors = lambda: []
test_system = self.get_module_system(pg_descriptor)
# Initialize the peer grading module. # Initialize the peer grading module.
peer_grading = PeerGradingModule( peer_grading = PeerGradingModule(
pg_descriptor, pg_descriptor,
self.test_system, test_system,
self.field_data, self.field_data,
self.scope_ids, self.scope_ids,
) )
self.test_system.xmodule_instance = peer_grading
return peer_grading return peer_grading
...@@ -384,13 +394,16 @@ class PeerGradingModuleTrackChangesTest(unittest.TestCase, DummyModulestore): ...@@ -384,13 +394,16 @@ class PeerGradingModuleTrackChangesTest(unittest.TestCase, DummyModulestore):
mock_track_changes_problem = Mock(side_effect=[MockedTrackChangesProblem()]) mock_track_changes_problem = Mock(side_effect=[MockedTrackChangesProblem()])
pgm_location = Location(["i4x", "edX", "open_ended", "peergrading", "PeerGradingSample"]) pgm_location = Location(["i4x", "edX", "open_ended", "peergrading", "PeerGradingSample"])
def get_module_system(self, descriptor):
test_system = get_test_system()
test_system.open_ended_grading_interface = None
return test_system
def setUp(self): def setUp(self):
""" """
Create a peer grading module from a test system Create a peer grading module from a test system
@return: @return:
""" """
self.test_system = get_test_system()
self.test_system.open_ended_grading_interface = None
self.setup_modulestore(COURSE) self.setup_modulestore(COURSE)
self.peer_grading = self.get_module_from_location(self.pgm_location, COURSE) self.peer_grading = self.get_module_from_location(self.pgm_location, COURSE)
......
...@@ -78,7 +78,9 @@ class DummyModulestore(object): ...@@ -78,7 +78,9 @@ class DummyModulestore(object):
""" """
A mixin that allows test classes to have convenience functions to get a module given a location A mixin that allows test classes to have convenience functions to get a module given a location
""" """
get_test_system = get_test_system()
def get_module_system(self, descriptor):
raise NotImplementedError("Sub-tests must specify how to generate a module-system")
def setup_modulestore(self, name): def setup_modulestore(self, name):
self.modulestore = XMLModuleStore(DATA_DIR, course_dirs=[name]) self.modulestore = XMLModuleStore(DATA_DIR, course_dirs=[name])
...@@ -93,7 +95,7 @@ class DummyModulestore(object): ...@@ -93,7 +95,7 @@ class DummyModulestore(object):
if not isinstance(location, Location): if not isinstance(location, Location):
location = Location(location) location = Location(location)
descriptor = self.modulestore.get_instance(course.id, location, depth=None) descriptor = self.modulestore.get_instance(course.id, location, depth=None)
descriptor.xmodule_runtime = self.test_system descriptor.xmodule_runtime = self.get_module_system(descriptor)
return descriptor return descriptor
# Task state for a module with self assessment then instructor assessment. # Task state for a module with self assessment then instructor assessment.
......
...@@ -31,9 +31,6 @@ class TimeLimitModule(TimeLimitFields, XModule): ...@@ -31,9 +31,6 @@ class TimeLimitModule(TimeLimitFields, XModule):
Wrapper module which imposes a time constraint for the completion of its child. Wrapper module which imposes a time constraint for the completion of its child.
''' '''
def __init__(self, *args, **kwargs):
XModule.__init__(self, *args, **kwargs)
# For a timed activity, we are only interested here # For a timed activity, we are only interested here
# in time-related accommodations, and these should be disjoint. # in time-related accommodations, and these should be disjoint.
# (For proctored exams, it is possible to have multiple accommodations # (For proctored exams, it is possible to have multiple accommodations
......
...@@ -16,9 +16,6 @@ class VerticalFields(object): ...@@ -16,9 +16,6 @@ class VerticalFields(object):
class VerticalModule(VerticalFields, XModule): class VerticalModule(VerticalFields, XModule):
''' Layout module for laying out submodules vertically.''' ''' Layout module for laying out submodules vertically.'''
def __init__(self, *args, **kwargs):
XModule.__init__(self, *args, **kwargs)
def student_view(self, context): def student_view(self, context):
fragment = Fragment() fragment = Fragment()
contents = [] contents = []
......
...@@ -392,6 +392,7 @@ class XModule(XModuleMixin, HTMLSnippet, XBlock): # pylint: disable=abstract-me ...@@ -392,6 +392,7 @@ class XModule(XModuleMixin, HTMLSnippet, XBlock): # pylint: disable=abstract-me
super(XModule, self).__init__(*args, **kwargs) super(XModule, self).__init__(*args, **kwargs)
self._loaded_children = None self._loaded_children = None
self.system = self.runtime self.system = self.runtime
self.runtime.xmodule_instance = self
def __unicode__(self): def __unicode__(self):
return u'<x_module(id={0})>'.format(self.id) return u'<x_module(id={0})>'.format(self.id)
...@@ -737,7 +738,7 @@ class XModuleDescriptor(XModuleMixin, HTMLSnippet, ResourceTemplates, XBlock): ...@@ -737,7 +738,7 @@ class XModuleDescriptor(XModuleMixin, HTMLSnippet, ResourceTemplates, XBlock):
assert self.xmodule_runtime.error_descriptor_class is not None assert self.xmodule_runtime.error_descriptor_class is not None
if self.xmodule_runtime.xmodule_instance is None: if self.xmodule_runtime.xmodule_instance is None:
try: try:
self.xmodule_runtime.xmodule_instance = self.xmodule_runtime.construct_xblock_from_class( self.xmodule_runtime.construct_xblock_from_class(
self.module_class, self.module_class,
descriptor=self, descriptor=self,
scope_ids=self.scope_ids, scope_ids=self.scope_ids,
...@@ -1041,6 +1042,7 @@ class ModuleSystem(ConfigurableFragmentWrapper, Runtime): # pylint: disable=abs ...@@ -1041,6 +1042,7 @@ class ModuleSystem(ConfigurableFragmentWrapper, Runtime): # pylint: disable=abs
""" """
The url prefix to be used by XModules to call into handle_ajax The url prefix to be used by XModules to call into handle_ajax
""" """
assert self.xmodule_instance is not None
return self.handler_url(self.xmodule_instance, 'xmodule_handler', '', '').rstrip('/?') return self.handler_url(self.xmodule_instance, 'xmodule_handler', '', '').rstrip('/?')
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment