diff --git a/xblock/fields.py b/xblock/fields.py index 8f5eecc8a..ee037581e 100644 --- a/xblock/fields.py +++ b/xblock/fields.py @@ -307,7 +307,6 @@ class will want to refer to. runtime_options. """ - MUTABLE = True _default = None # Indicates if a field's None value should be sent to the XML representation. none_to_xml = False @@ -334,10 +333,7 @@ def __init__(self, help=None, default=UNSET, scope=Scope.content, # pylint:disa @property def default(self): """Returns the static value that this defaults to.""" - if self.MUTABLE: - return copy.deepcopy(self._default) - else: - return self._default + return copy.deepcopy(self._default) @property def name(self): @@ -516,10 +512,7 @@ def __get__(self, xblock, xblock_class): value = self.default self._set_cached_value(xblock, value) - # If this is a mutable type, mark it as dirty, since mutations can occur without an - # explicit call to __set__ (but they do require a call to __get__) - if self.MUTABLE: - self._mark_dirty(xblock, value) + self._mark_dirty(xblock, value) return self._sanitize(value) @@ -701,7 +694,6 @@ class Integer(JSONField): containing a floating point number ('3.48') will throw an error. """ - MUTABLE = False def from_json(self, value): if value is None or value == '': @@ -720,7 +712,6 @@ class Float(JSONField): something for which float(value) does not throw an error. """ - MUTABLE = False def from_json(self, value): if value is None or value == '': @@ -750,7 +741,6 @@ class Boolean(JSONField): None - > False """ - MUTABLE = False # We're OK redefining built-in `help` def __init__(self, help=None, default=UNSET, scope=Scope.content, display_name=None, @@ -853,7 +843,6 @@ class String(JSONField): The value, as loaded or enforced, can either be None or a basestring instance. """ - MUTABLE = False BAD_REGEX = re.compile('[\x00-\x08\x0b\x0c\x0e-\x1f\ud800-\udfff\ufffe\uffff]', flags=re.UNICODE) def _sanitize(self, value): diff --git a/xblock/reference/plugins.py b/xblock/reference/plugins.py index 17825942e..2e9b28e4b 100644 --- a/xblock/reference/plugins.py +++ b/xblock/reference/plugins.py @@ -122,7 +122,6 @@ class Filesystem(Field): src=...> will typically be faster through this than serving that up through XBlocks views. """ - MUTABLE = False def __get__(self, xblock, xblock_class): """ diff --git a/xblock/test/test_fields.py b/xblock/test/test_fields.py index 6f67f71eb..850563caf 100644 --- a/xblock/test/test_fields.py +++ b/xblock/test/test_fields.py @@ -703,7 +703,6 @@ def test_setting_the_same_value_marks_field_as_dirty(): # pylint: disable=unsubscriptable-object class FieldTester(XBlock): """Test block for set - get test.""" - non_mutable = String(scope=Scope.settings) list_field = List(scope=Scope.settings) dict_field = Dict(scope=Scope.settings) @@ -714,17 +713,13 @@ class FieldTester(XBlock): assert len(field_tester._dirty_fields) == 0 assert not field_tester.fields['list_field'].is_set_on(field_tester) assert not field_tester.fields['dict_field'].is_set_on(field_tester) - assert not field_tester.fields['non_mutable'].is_set_on(field_tester) - field_tester.non_mutable = field_tester.non_mutable field_tester.list_field = field_tester.list_field field_tester.dict_field = field_tester.dict_field - assert not field_tester.fields['non_mutable'] in field_tester._dirty_fields assert field_tester.fields['list_field'] in field_tester._dirty_fields assert field_tester.fields['dict_field'] in field_tester._dirty_fields - assert not field_tester.fields['non_mutable'].is_set_on(field_tester) assert not field_tester.fields['list_field'].is_set_on(field_tester) assert not field_tester.fields['dict_field'].is_set_on(field_tester)