From b8e63cbb4d13d6363f8a301acd1001d602ba55f7 Mon Sep 17 00:00:00 2001 From: Calen Pennington Date: Mon, 15 Jun 2015 14:34:50 -0400 Subject: [PATCH] Disable lineage traversal when no providers are specified in OverrideFieldData --- lms/djangoapps/courseware/field_overrides.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lms/djangoapps/courseware/field_overrides.py b/lms/djangoapps/courseware/field_overrides.py index 6d17f2226c..e5e50fd7de 100644 --- a/lms/djangoapps/courseware/field_overrides.py +++ b/lms/djangoapps/courseware/field_overrides.py @@ -138,6 +138,9 @@ class OverrideFieldData(FieldData): self.fallback.delete(block, name) def has(self, block, name): + if not self.providers: + return self.fallback.has(block, name) + has = self.get_override(block, name) if has is NOTSET: # If this is an inheritable field and an override is set above, @@ -157,7 +160,7 @@ class OverrideFieldData(FieldData): def default(self, block, name): # The `default` method is overloaded by the field storage system to # also handle inheritance. - if not overrides_disabled(): + if self.providers and not overrides_disabled(): inheritable = InheritanceMixin.fields.keys() if name in inheritable: for ancestor in _lineage(block):