Merge pull request #24782 from edx/diana/add-settings-toggles

ARCHBOM-1409 - Add django settings toggles to toggles endpoint.
This commit is contained in:
Diana Huang
2020-08-14 14:12:55 -04:00
committed by GitHub
2 changed files with 23 additions and 1 deletions

View File

@@ -4,5 +4,5 @@ from django.conf.urls import url
from openedx.core.djangoapps.waffle_utils.views import ToggleStateView
urlpatterns = [
url(r'^state/', ToggleStateView.as_view(), name="toggle_state"),
url(r'^v0/state/', ToggleStateView.as_view(), name="toggle_state"),
]

View File

@@ -2,6 +2,7 @@
Views that we will use to view toggle state in edx-platform.
"""
from collections import OrderedDict
from django.conf import settings
from edx_rest_framework_extensions.auth.jwt.authentication import JwtAuthentication
from edx_rest_framework_extensions.permissions import IsStaff
@@ -24,6 +25,7 @@ class ToggleStateView(views.APIView):
response = OrderedDict()
response['waffle_flags'] = self._get_all_waffle_flags()
response['waffle_switches'] = self._get_all_waffle_switches()
response['django_settings'] = self._get_settings_state()
return Response(response)
def _get_all_waffle_switches(self):
@@ -174,3 +176,23 @@ class ToggleStateView(views.APIView):
toggle['name'] = toggle_name
toggles_dict[toggle_name] = toggle
return toggle
def _get_settings_state(self):
"""
Returns a dictionary of settings values. Will only return values that are set to true or false.
"""
bool_settings = list()
for setting_name, setting_value in vars(settings).items():
if isinstance(setting_value, dict):
for dict_name, dict_value in setting_value.items():
if isinstance(dict_value, bool):
bool_settings.append(
{
'name': "{setting_name}['{dict_name}']".format(setting_name=setting_name, dict_name=dict_name),
'is_active': dict_value,
}
)
elif isinstance(setting_value, bool):
bool_settings.append({'name': setting_name, 'is_active': setting_value})
return bool_settings