From 5026d6e9fb7d60afeca9ecbd973d56d82f382024 Mon Sep 17 00:00:00 2001 From: Calen Pennington Date: Wed, 18 Jul 2012 08:59:51 -0400 Subject: [PATCH] Give all XModuleDescriptors a module_class, and make it inheritance of js_module_names work --- cms/envs/common.py | 6 +----- common/lib/xmodule/xmodule/capa_module.py | 1 + common/lib/xmodule/xmodule/raw_module.py | 1 + common/lib/xmodule/xmodule/seq_module.py | 1 + common/lib/xmodule/xmodule/video_module.py | 3 ++- common/lib/xmodule/xmodule/x_module.py | 11 +++-------- lms/envs/common.py | 6 +----- 7 files changed, 10 insertions(+), 19 deletions(-) diff --git a/cms/envs/common.py b/cms/envs/common.py index 41b34bdaa1..adfc3bf2b0 100644 --- a/cms/envs/common.py +++ b/cms/envs/common.py @@ -194,11 +194,7 @@ except OSError as exc: fragments = set() for descriptor in XModuleDescriptor.load_classes() + [RawDescriptor]: descriptor_js = descriptor.get_javascript() - module = getattr(descriptor, 'module_class', None) - if module is not None: - module_js = module.get_javascript() - else: - module_js = {} + module_js = descriptor.module_class.get_javascript() for filetype in ('coffee', 'js'): for fragment in descriptor_js.get(filetype, []) + module_js.get(filetype, []): diff --git a/common/lib/xmodule/xmodule/capa_module.py b/common/lib/xmodule/xmodule/capa_module.py index 006978861b..d8beb02990 100644 --- a/common/lib/xmodule/xmodule/capa_module.py +++ b/common/lib/xmodule/xmodule/capa_module.py @@ -72,6 +72,7 @@ class CapaModule(XModule): icon_class = 'problem' js = {'coffee': [resource_string(__name__, 'js/src/capa/display.coffee')]} + js_module_name = "Problem" def __init__(self, system, location, definition, instance_state=None, shared_state=None, **kwargs): XModule.__init__(self, system, location, definition, instance_state, shared_state, **kwargs) diff --git a/common/lib/xmodule/xmodule/raw_module.py b/common/lib/xmodule/xmodule/raw_module.py index 8cc6b3bb5f..2794e27dd6 100644 --- a/common/lib/xmodule/xmodule/raw_module.py +++ b/common/lib/xmodule/xmodule/raw_module.py @@ -13,6 +13,7 @@ class RawDescriptor(MakoModuleDescriptor, XmlDescriptor): mako_template = "widgets/raw-edit.html" js = {'coffee': [resource_string(__name__, 'js/src/raw/edit.coffee')]} + js_module_name = "RawDescriptor" def get_context(self): return { diff --git a/common/lib/xmodule/xmodule/seq_module.py b/common/lib/xmodule/xmodule/seq_module.py index 4a142a83cc..0c19841cfb 100644 --- a/common/lib/xmodule/xmodule/seq_module.py +++ b/common/lib/xmodule/xmodule/seq_module.py @@ -21,6 +21,7 @@ class SequenceModule(XModule): ''' Layout module which lays out content in a temporal sequence ''' js = {'coffee': [resource_string(__name__, 'js/src/sequence/display.coffee')]} + js_module_name = "Sequence" def __init__(self, system, location, definition, instance_state=None, shared_state=None, **kwargs): XModule.__init__(self, system, location, definition, instance_state, shared_state, **kwargs) diff --git a/common/lib/xmodule/xmodule/video_module.py b/common/lib/xmodule/xmodule/video_module.py index 36aab199a0..8e536474ed 100644 --- a/common/lib/xmodule/xmodule/video_module.py +++ b/common/lib/xmodule/xmodule/video_module.py @@ -18,8 +18,9 @@ class VideoModule(XModule): [resource_string(__name__, 'js/src/video/display.coffee')] + [resource_string(__name__, 'js/src/video/display/' + filename) for filename - in resource_listdir(__name__, 'js/src/video/display') + in sorted(resource_listdir(__name__, 'js/src/video/display')) ]} + js_module_name = "Video" def __init__(self, system, location, definition, instance_state=None, shared_state=None, **kwargs): XModule.__init__(self, system, location, definition, instance_state, shared_state, **kwargs) diff --git a/common/lib/xmodule/xmodule/x_module.py b/common/lib/xmodule/xmodule/x_module.py index 1dc92c915b..5e9370d1c8 100644 --- a/common/lib/xmodule/xmodule/x_module.py +++ b/common/lib/xmodule/xmodule/x_module.py @@ -78,6 +78,7 @@ class XModule(object): icon_class = 'other' js = {} + js_module_name = None def __init__(self, system, location, definition, instance_state=None, shared_state=None, **kwargs): ''' @@ -197,10 +198,6 @@ class XModule(object): # ================================== HTML INTERFACE DEFINITIONS ====================== - @property - def js_module_name(self): - return self.__class__.__name__ - @classmethod def get_javascript(cls): """ @@ -232,6 +229,8 @@ class XModuleDescriptor(Plugin): """ entry_point = "xmodule.v1" js = {} + js_module_name = None + module_class = XModule # A list of metadata that this module can inherit from its parent module inheritable_metadata = ( @@ -406,10 +405,6 @@ class XModuleDescriptor(Plugin): raise NotImplementedError('Modules must implement export_to_xml to enable xml export') # ================================== HTML INTERFACE DEFINITIONS ====================== - @property - def js_module_name(self): - return self.__class__.__name__ - @classmethod def get_javascript(cls): """ diff --git a/lms/envs/common.py b/lms/envs/common.py index 8b179e90d4..3edcf2f197 100644 --- a/lms/envs/common.py +++ b/lms/envs/common.py @@ -344,11 +344,7 @@ except OSError as exc: fragments = set() for descriptor in XModuleDescriptor.load_classes() + [HiddenDescriptor]: - module = getattr(descriptor, 'module_class', None) - if module is None: - continue - - js = module.get_javascript() + module_js = descriptor.module_class.get_javascript() for filetype in ('coffee', 'js'): for fragment in js.get(filetype, []): fragments.add((filetype, fragment))