Skip to content
Snippets Groups Projects
Unverified Commit 8d6b7ee7 authored by Calen Pennington's avatar Calen Pennington Committed by GitHub
Browse files

Merge pull request #19093 from cpennington/org-to-site-config

Add a facility for getting the SiteConfiguration that an org belongs to
parents e2d52356 996eceb6
No related branches found
No related tags found
No related merge requests found
......@@ -60,6 +60,25 @@ class SiteConfiguration(models.Model):
return default
@classmethod
def get_configuration_for_org(cls, org):
"""
This returns a SiteConfiguration object which has an org_filter that matches
the supplied org
Args:
org (str): Org to use to filter SiteConfigurations
"""
for configuration in cls.objects.filter(values__contains=org, enabled=True).all():
course_org_filter = configuration.get_value('course_org_filter', [])
# The value of 'course_org_filter' can be configured as a string representing
# a single organization or a list of strings representing multiple organizations.
if not isinstance(course_org_filter, list):
course_org_filter = [course_org_filter]
if org in course_org_filter:
return configuration
return None
@classmethod
def get_value_for_org(cls, org, name, default=None):
"""
......@@ -74,15 +93,11 @@ class SiteConfiguration(models.Model):
Returns:
Configuration value for the given key.
"""
for configuration in cls.objects.filter(values__contains=org, enabled=True).all():
course_org_filter = configuration.get_value('course_org_filter', [])
# The value of 'course_org_filter' can be configured as a string representing
# a single organization or a list of strings representing multiple organizations.
if not isinstance(course_org_filter, list):
course_org_filter = [course_org_filter]
if org in course_org_filter:
return configuration.get_value(name, default)
return default
configuration = cls.get_configuration_for_org(org)
if configuration is None:
return default
else:
return configuration.get_value(name, default)
@classmethod
def get_all_orgs(cls):
......
......@@ -275,6 +275,34 @@ class SiteConfigurationTests(TestCase):
"dummy-default-value",
)
def test_get_site_for_org(self):
"""
Test that get_value_for_org returns correct value for any given key.
"""
# add SiteConfiguration to database
config1 = SiteConfigurationFactory.create(
site=self.site,
values=self.test_config1,
)
config2 = SiteConfigurationFactory.create(
site=self.site2,
values=self.test_config2,
)
# Make sure entry is saved and retrieved correctly
self.assertEqual(
SiteConfiguration.get_configuration_for_org(self.test_config1['course_org_filter']),
config1,
)
self.assertEqual(
SiteConfiguration.get_configuration_for_org(self.test_config2['course_org_filter']),
config2,
)
self.assertEqual(
SiteConfiguration.get_configuration_for_org('something else'),
None,
)
def test_get_all_orgs(self):
"""
Test that get_all_orgs returns all orgs from site configuration.
......
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