mirror of
https://github.com/ansible/awx.git
synced 2026-02-16 10:40:01 -03:30
Merge pull request #6846 from jangsutsr/6798_remove_named_url_setting_category_from_api_v1
Remove named URL setting category from API V1
This commit is contained in:
@@ -86,7 +86,7 @@ class SettingsRegistry(object):
|
|||||||
categories[category_slug] = kwargs.get('category', None) or category_slug
|
categories[category_slug] = kwargs.get('category', None) or category_slug
|
||||||
return categories
|
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 = []
|
setting_names = []
|
||||||
if category_slug == 'user-defaults':
|
if category_slug == 'user-defaults':
|
||||||
category_slug = 'user'
|
category_slug = 'user'
|
||||||
@@ -95,6 +95,8 @@ class SettingsRegistry(object):
|
|||||||
for setting, kwargs in self._registry.items():
|
for setting, kwargs in self._registry.items():
|
||||||
if category_slug not in {None, 'all', kwargs.get('category_slug', None)}:
|
if category_slug not in {None, 'all', kwargs.get('category_slug', None)}:
|
||||||
continue
|
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:
|
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__;
|
# Note: Doesn't catch fields that set read_only via __init__;
|
||||||
# read-only field kwargs should always include read_only=True.
|
# read-only field kwargs should always include read_only=True.
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ from rest_framework import status
|
|||||||
# Tower
|
# Tower
|
||||||
from awx.api.generics import * # noqa
|
from awx.api.generics import * # noqa
|
||||||
from awx.api.permissions import IsSuperUser
|
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 import * # noqa
|
||||||
from awx.main.utils.handlers import BaseHTTPSHandler, LoggingConnectivityException
|
from awx.main.utils.handlers import BaseHTTPSHandler, LoggingConnectivityException
|
||||||
from awx.main.tasks import handle_setting_changes
|
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'))
|
SettingCategory = collections.namedtuple('SettingCategory', ('url', 'slug', 'name'))
|
||||||
|
|
||||||
|
VERSION_SPECIFIC_CATEGORIES_TO_EXCLUDE = {
|
||||||
|
1: set([
|
||||||
|
'named-url',
|
||||||
|
]),
|
||||||
|
2: set([]),
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
class SettingCategoryList(ListAPIView):
|
class SettingCategoryList(ListAPIView):
|
||||||
|
|
||||||
@@ -50,6 +57,8 @@ class SettingCategoryList(ListAPIView):
|
|||||||
else:
|
else:
|
||||||
categories = {}
|
categories = {}
|
||||||
for category_slug in sorted(categories.keys()):
|
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)
|
url = reverse('api:setting_singleton_detail', kwargs={'category_slug': category_slug}, request=self.request)
|
||||||
setting_categories.append(SettingCategory(url, category_slug, categories[category_slug]))
|
setting_categories.append(SettingCategory(url, category_slug, categories[category_slug]))
|
||||||
return setting_categories
|
return setting_categories
|
||||||
@@ -66,6 +75,8 @@ class SettingSingletonDetail(RetrieveUpdateDestroyAPIView):
|
|||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
self.category_slug = self.kwargs.get('category_slug', 'all')
|
self.category_slug = self.kwargs.get('category_slug', 'all')
|
||||||
all_category_slugs = settings_registry.get_registered_categories(features_enabled=get_licensed_features()).keys()
|
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):
|
if self.request.user.is_superuser or getattr(self.request.user, 'is_system_auditor', False):
|
||||||
category_slugs = all_category_slugs
|
category_slugs = all_category_slugs
|
||||||
else:
|
else:
|
||||||
@@ -75,7 +86,10 @@ class SettingSingletonDetail(RetrieveUpdateDestroyAPIView):
|
|||||||
if self.category_slug not in category_slugs:
|
if self.category_slug not in category_slugs:
|
||||||
raise PermissionDenied()
|
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':
|
if self.category_slug == 'user':
|
||||||
return Setting.objects.filter(key__in=registered_settings, user=self.request.user)
|
return Setting.objects.filter(key__in=registered_settings, user=self.request.user)
|
||||||
else:
|
else:
|
||||||
@@ -83,7 +97,10 @@ class SettingSingletonDetail(RetrieveUpdateDestroyAPIView):
|
|||||||
|
|
||||||
def get_object(self):
|
def get_object(self):
|
||||||
settings_qs = self.get_queryset()
|
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 = {}
|
all_settings = {}
|
||||||
for setting in settings_qs:
|
for setting in settings_qs:
|
||||||
all_settings[setting.key] = setting.value
|
all_settings[setting.key] = setting.value
|
||||||
|
|||||||
Reference in New Issue
Block a user