Skip to content
Snippets Groups Projects
Unverified Commit 0a57ff98 authored by Nimisha Asthagiri's avatar Nimisha Asthagiri Committed by GitHub
Browse files

Merge pull request #23547 from edx/arch/django-22-content-type-gating

Django2 StackedConfigurationModel: Fix query filter
parents 358b181b 5447e863
No related merge requests found
......@@ -183,19 +183,20 @@ class StackedConfigurationModel(ConfigurationModel):
values = field_defaults.copy()
global_override_q = Q(site=None, org=None, org_course=None, course_id=None)
site_override_q = Q(site=site, org=None, org_course=None, course_id=None)
org_override_q = Q(site=None, org=org, org_course=None, course_id=None)
org_course_override_q = Q(site=None, org=None, org_course=org_course, course_id=None)
course_override_q = Q(site=None, org=None, org_course=None, course_id=course_key)
overrides = cls.objects.current_set().filter(
global_override_q |
site_override_q |
org_override_q |
org_course_override_q |
course_override_q
)
# Build a multi_filter_query that defaults to querying for the global-level setting and adds queries
# for the stacked-level settings when applicable.
# Note: Django2+ requires checking for 'isnull' rather than passing 'None' in the queries.
multi_filter_query = Q(site__isnull=True, org__isnull=True, org_course__isnull=True, course_id__isnull=True)
if site:
multi_filter_query |= Q(site=site, org__isnull=True, org_course__isnull=True, course_id__isnull=True)
if org:
multi_filter_query |= Q(site__isnull=True, org=org, org_course__isnull=True, course_id__isnull=True)
if org_course:
multi_filter_query |= Q(site__isnull=True, org__isnull=True, org_course=org_course, course_id__isnull=True)
if course_key:
multi_filter_query |= Q(site__isnull=True, org__isnull=True, org_course__isnull=True, course_id=course_key)
overrides = cls.objects.current_set().filter(multi_filter_query)
provenances = defaultdict(lambda: Provenance.default)
# We are sorting in python to avoid doing a filesort in the database for
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment