Commit d77491e4 by Calen Pennington

Pull XModule attributes out into a mixin that can be applied to xblocks

parent f4dd5082
...@@ -31,6 +31,7 @@ from path import path ...@@ -31,6 +31,7 @@ from path import path
from lms.xblock.mixin import LmsBlockMixin from lms.xblock.mixin import LmsBlockMixin
from cms.xmodule_namespace import CmsBlockMixin from cms.xmodule_namespace import CmsBlockMixin
from xmodule.modulestore.inheritance import InheritanceMixin from xmodule.modulestore.inheritance import InheritanceMixin
from xmodule.x_module import XModuleMixin
############################ FEATURE CONFIGURATION ############################# ############################ FEATURE CONFIGURATION #############################
...@@ -168,7 +169,7 @@ MIDDLEWARE_CLASSES = ( ...@@ -168,7 +169,7 @@ MIDDLEWARE_CLASSES = (
# This should be moved into an XBlock Runtime/Application object # This should be moved into an XBlock Runtime/Application object
# once the responsibility of XBlock creation is moved out of modulestore - cpennington # once the responsibility of XBlock creation is moved out of modulestore - cpennington
XBLOCK_MIXINS = (LmsBlockMixin, CmsBlockMixin, InheritanceMixin) XBLOCK_MIXINS = (LmsBlockMixin, CmsBlockMixin, InheritanceMixin, XModuleMixin)
############################ SIGNAL HANDLERS ################################ ############################ SIGNAL HANDLERS ################################
......
...@@ -43,8 +43,6 @@ log = logging.getLogger(__name__) ...@@ -43,8 +43,6 @@ log = logging.getLogger(__name__)
#============================================================================== #==============================================================================
class SplitMongoModuleStore(ModuleStoreBase): class SplitMongoModuleStore(ModuleStoreBase):
""" """
A Mongodb backed ModuleStore supporting versions, inheritance, A Mongodb backed ModuleStore supporting versions, inheritance,
......
...@@ -15,6 +15,7 @@ from xmodule.modulestore.exceptions import InsufficientSpecificationError, ItemN ...@@ -15,6 +15,7 @@ from xmodule.modulestore.exceptions import InsufficientSpecificationError, ItemN
DuplicateItemError DuplicateItemError
from xmodule.modulestore.locator import CourseLocator, BlockUsageLocator, VersionTree, DescriptionLocator from xmodule.modulestore.locator import CourseLocator, BlockUsageLocator, VersionTree, DescriptionLocator
from xmodule.modulestore.inheritance import InheritanceMixin from xmodule.modulestore.inheritance import InheritanceMixin
from xmodule.x_module import XModuleMixin
from pytz import UTC from pytz import UTC
from path import path from path import path
import re import re
...@@ -34,7 +35,7 @@ class SplitModuleTest(unittest.TestCase): ...@@ -34,7 +35,7 @@ class SplitModuleTest(unittest.TestCase):
'db': 'test_xmodule', 'db': 'test_xmodule',
'collection': 'modulestore{0}'.format(uuid.uuid4().hex), 'collection': 'modulestore{0}'.format(uuid.uuid4().hex),
'fs_root': '', 'fs_root': '',
'xblock_mixins': (InheritanceMixin,) 'xblock_mixins': (InheritanceMixin, XModuleMixin)
} }
MODULESTORE = { MODULESTORE = {
......
...@@ -11,15 +11,11 @@ import json ...@@ -11,15 +11,11 @@ import json
import os import os
import unittest import unittest
import fs
import fs.osfs
import numpy
from mock import Mock from mock import Mock
from path import path from path import path
import calc
from xblock.field_data import DictFieldData from xblock.field_data import DictFieldData
from xmodule.x_module import ModuleSystem, XModuleDescriptor, DescriptorSystem from xmodule.x_module import ModuleSystem, XModuleDescriptor, XModuleMixin
from xmodule.modulestore.inheritance import InheritanceMixin from xmodule.modulestore.inheritance import InheritanceMixin
from xmodule.mako_module import MakoDescriptorSystem from xmodule.mako_module import MakoDescriptorSystem
...@@ -81,7 +77,7 @@ def get_test_descriptor_system(): ...@@ -81,7 +77,7 @@ def get_test_descriptor_system():
resources_fs=Mock(), resources_fs=Mock(),
error_tracker=Mock(), error_tracker=Mock(),
render_template=lambda template, context: repr(context), render_template=lambda template, context: repr(context),
mixins=(InheritanceMixin,), mixins=(InheritanceMixin, XModuleMixin),
) )
......
...@@ -13,6 +13,7 @@ from xmodule.xml_module import is_pointer_tag ...@@ -13,6 +13,7 @@ from xmodule.xml_module import is_pointer_tag
from xmodule.modulestore import Location from xmodule.modulestore import Location
from xmodule.modulestore.xml import ImportSystem, XMLModuleStore from xmodule.modulestore.xml import ImportSystem, XMLModuleStore
from xmodule.modulestore.inheritance import compute_inherited_metadata from xmodule.modulestore.inheritance import compute_inherited_metadata
from xmodule.x_module import XModuleMixin
from xmodule.fields import Date from xmodule.fields import Date
from xmodule.tests import DATA_DIR from xmodule.tests import DATA_DIR
from xmodule.modulestore.inheritance import InheritanceMixin from xmodule.modulestore.inheritance import InheritanceMixin
...@@ -42,7 +43,7 @@ class DummySystem(ImportSystem): ...@@ -42,7 +43,7 @@ class DummySystem(ImportSystem):
error_tracker=error_tracker, error_tracker=error_tracker,
parent_tracker=parent_tracker, parent_tracker=parent_tracker,
load_error_modules=load_error_modules, load_error_modules=load_error_modules,
mixins=(InheritanceMixin,) mixins=(InheritanceMixin, XModuleMixin)
) )
def render_template(self, _template, _context): def render_template(self, _template, _context):
......
...@@ -12,10 +12,10 @@ from xblock.runtime import DbModel ...@@ -12,10 +12,10 @@ from xblock.runtime import DbModel
from xmodule.fields import Date, Timedelta from xmodule.fields import Date, Timedelta
from xmodule.modulestore.inheritance import InheritanceKeyValueStore, InheritanceMixin from xmodule.modulestore.inheritance import InheritanceKeyValueStore, InheritanceMixin
from xmodule.x_module import XModuleFields
from xmodule.xml_module import XmlDescriptor, serialize_field, deserialize_field from xmodule.xml_module import XmlDescriptor, serialize_field, deserialize_field
from xmodule.course_module import CourseDescriptor from xmodule.course_module import CourseDescriptor
from xmodule.seq_module import SequenceDescriptor from xmodule.seq_module import SequenceDescriptor
from xmodule.x_module import XModuleMixin
from xmodule.tests import get_test_descriptor_system from xmodule.tests import get_test_descriptor_system
from xmodule.tests.xml import XModuleXmlImportTest from xmodule.tests.xml import XModuleXmlImportTest
...@@ -65,7 +65,7 @@ class EditableMetadataFieldsTest(unittest.TestCase): ...@@ -65,7 +65,7 @@ class EditableMetadataFieldsTest(unittest.TestCase):
# Also tests that xml_attributes is filtered out of XmlDescriptor. # Also tests that xml_attributes is filtered out of XmlDescriptor.
self.assertEqual(1, len(editable_fields), editable_fields) self.assertEqual(1, len(editable_fields), editable_fields)
self.assert_field_values( self.assert_field_values(
editable_fields, 'display_name', XModuleFields.display_name, editable_fields, 'display_name', XModuleMixin.display_name,
explicitly_set=False, value=None, default_value=None explicitly_set=False, value=None, default_value=None
) )
...@@ -73,7 +73,7 @@ class EditableMetadataFieldsTest(unittest.TestCase): ...@@ -73,7 +73,7 @@ class EditableMetadataFieldsTest(unittest.TestCase):
# Tests that explicitly_set is correct when a value overrides the default (not inheritable). # Tests that explicitly_set is correct when a value overrides the default (not inheritable).
editable_fields = self.get_xml_editable_fields(DictFieldData({'display_name': 'foo'})) editable_fields = self.get_xml_editable_fields(DictFieldData({'display_name': 'foo'}))
self.assert_field_values( self.assert_field_values(
editable_fields, 'display_name', XModuleFields.display_name, editable_fields, 'display_name', XModuleMixin.display_name,
explicitly_set=True, value='foo', default_value=None explicitly_set=True, value='foo', default_value=None
) )
......
...@@ -32,6 +32,7 @@ from .discussionsettings import * ...@@ -32,6 +32,7 @@ from .discussionsettings import *
from lms.xblock.mixin import LmsBlockMixin from lms.xblock.mixin import LmsBlockMixin
from xmodule.modulestore.inheritance import InheritanceMixin from xmodule.modulestore.inheritance import InheritanceMixin
from xmodule.x_module import XModuleMixin
################################### FEATURES ################################### ################################### FEATURES ###################################
# The display name of the platform to be used in templates/emails/etc. # The display name of the platform to be used in templates/emails/etc.
...@@ -363,7 +364,7 @@ CONTENTSTORE = None ...@@ -363,7 +364,7 @@ CONTENTSTORE = None
# This should be moved into an XBlock Runtime/Application object # This should be moved into an XBlock Runtime/Application object
# once the responsibility of XBlock creation is moved out of modulestore - cpennington # once the responsibility of XBlock creation is moved out of modulestore - cpennington
XBLOCK_MIXINS = (LmsBlockMixin, InheritanceMixin) XBLOCK_MIXINS = (LmsBlockMixin, InheritanceMixin, XModuleMixin)
#################### Python sandbox ############################################ #################### Python sandbox ############################################
......
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