diff --git a/awx/conf/registry.py b/awx/conf/registry.py index 936118e053..e302f58aad 100644 --- a/awx/conf/registry.py +++ b/awx/conf/registry.py @@ -86,7 +86,7 @@ class SettingsRegistry(object): categories[category_slug] = kwargs.get('category', None) or category_slug return categories - def get_registered_settings(self, category_slug=None, read_only=None, features_enabled=None): + def get_registered_settings(self, category_slug=None, read_only=None, features_enabled=None, slugs_to_ignore=set()): setting_names = [] if category_slug == 'user-defaults': category_slug = 'user' @@ -95,6 +95,8 @@ class SettingsRegistry(object): for setting, kwargs in self._registry.items(): if category_slug not in {None, 'all', kwargs.get('category_slug', None)}: continue + if kwargs.get('category_slug', None) in slugs_to_ignore: + continue if read_only in {True, False} and kwargs.get('read_only', False) != read_only: # Note: Doesn't catch fields that set read_only via __init__; # read-only field kwargs should always include read_only=True. diff --git a/awx/conf/views.py b/awx/conf/views.py index b1b6699e8f..4fb4cd60c7 100644 --- a/awx/conf/views.py +++ b/awx/conf/views.py @@ -19,7 +19,7 @@ from rest_framework import status # Tower from awx.api.generics import * # noqa from awx.api.permissions import IsSuperUser -from awx.api.versioning import reverse +from awx.api.versioning import reverse, get_request_version from awx.main.utils import * # noqa from awx.main.utils.handlers import BaseHTTPSHandler, LoggingConnectivityException from awx.main.tasks import handle_setting_changes @@ -31,6 +31,13 @@ from awx.conf import settings_registry SettingCategory = collections.namedtuple('SettingCategory', ('url', 'slug', 'name')) +VERSION_SPECIFIC_CATEGORIES_TO_EXCLUDE = { + 1: set([ + 'named-url', + ]), + 2: set([]), +} + class SettingCategoryList(ListAPIView): @@ -50,6 +57,8 @@ class SettingCategoryList(ListAPIView): else: categories = {} for category_slug in sorted(categories.keys()): + if category_slug in VERSION_SPECIFIC_CATEGORIES_TO_EXCLUDE[get_request_version(self.request)]: + continue url = reverse('api:setting_singleton_detail', kwargs={'category_slug': category_slug}, request=self.request) setting_categories.append(SettingCategory(url, category_slug, categories[category_slug])) return setting_categories @@ -66,6 +75,8 @@ class SettingSingletonDetail(RetrieveUpdateDestroyAPIView): def get_queryset(self): self.category_slug = self.kwargs.get('category_slug', 'all') all_category_slugs = settings_registry.get_registered_categories(features_enabled=get_licensed_features()).keys() + for slug_to_delete in VERSION_SPECIFIC_CATEGORIES_TO_EXCLUDE[get_request_version(self.request)]: + all_category_slugs.remove(slug_to_delete) if self.request.user.is_superuser or getattr(self.request.user, 'is_system_auditor', False): category_slugs = all_category_slugs else: @@ -75,7 +86,10 @@ class SettingSingletonDetail(RetrieveUpdateDestroyAPIView): if self.category_slug not in category_slugs: raise PermissionDenied() - registered_settings = settings_registry.get_registered_settings(category_slug=self.category_slug, read_only=False, features_enabled=get_licensed_features()) + registered_settings = settings_registry.get_registered_settings( + category_slug=self.category_slug, read_only=False, features_enabled=get_licensed_features(), + slugs_to_ignore=VERSION_SPECIFIC_CATEGORIES_TO_EXCLUDE[get_request_version(self.request)] + ) if self.category_slug == 'user': return Setting.objects.filter(key__in=registered_settings, user=self.request.user) else: @@ -83,7 +97,10 @@ class SettingSingletonDetail(RetrieveUpdateDestroyAPIView): def get_object(self): settings_qs = self.get_queryset() - registered_settings = settings_registry.get_registered_settings(category_slug=self.category_slug, features_enabled=get_licensed_features()) + registered_settings = settings_registry.get_registered_settings( + category_slug=self.category_slug, features_enabled=get_licensed_features(), + slugs_to_ignore=VERSION_SPECIFIC_CATEGORIES_TO_EXCLUDE[get_request_version(self.request)] + ) all_settings = {} for setting in settings_qs: all_settings[setting.key] = setting.value