mirror of
https://github.com/ansible/awx.git
synced 2026-03-22 11:25:08 -02:30
don't delete settings that are marked as read_only
This commit is contained in:
@@ -148,6 +148,8 @@ class SettingSingletonDetail(RetrieveUpdateDestroyAPIView):
|
|||||||
def perform_destroy(self, instance):
|
def perform_destroy(self, instance):
|
||||||
settings_change_list = []
|
settings_change_list = []
|
||||||
for setting in self.get_queryset().exclude(key='LICENSE'):
|
for setting in self.get_queryset().exclude(key='LICENSE'):
|
||||||
|
if settings_registry.get_setting_field(setting.key).read_only:
|
||||||
|
continue
|
||||||
setting.delete()
|
setting.delete()
|
||||||
settings_change_list.append(setting.key)
|
settings_change_list.append(setting.key)
|
||||||
if settings_change_list and 'migrate_to_database_settings' not in sys.argv:
|
if settings_change_list and 'migrate_to_database_settings' not in sys.argv:
|
||||||
|
|||||||
@@ -5,6 +5,8 @@
|
|||||||
import pytest
|
import pytest
|
||||||
import os
|
import os
|
||||||
|
|
||||||
|
from django.conf import settings
|
||||||
|
|
||||||
# Mock
|
# Mock
|
||||||
import mock
|
import mock
|
||||||
|
|
||||||
@@ -259,3 +261,28 @@ def test_isolated_job_setting_validation(get, patch, admin, setting_name):
|
|||||||
|
|
||||||
data = get(url, user=admin).data
|
data = get(url, user=admin).data
|
||||||
assert data[setting_name] != -1
|
assert data[setting_name] != -1
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.django_db
|
||||||
|
@pytest.mark.parametrize('key, expected', [
|
||||||
|
['AWX_ISOLATED_PRIVATE_KEY', '$encrypted$'],
|
||||||
|
['AWX_ISOLATED_PUBLIC_KEY', 'secret'],
|
||||||
|
])
|
||||||
|
def test_isolated_keys_readonly(get, patch, delete, admin, key, expected):
|
||||||
|
Setting.objects.create(
|
||||||
|
key=key,
|
||||||
|
value='secret'
|
||||||
|
).save()
|
||||||
|
assert getattr(settings, key) == 'secret'
|
||||||
|
|
||||||
|
url = reverse('api:setting_singleton_detail', kwargs={'category_slug': 'jobs'})
|
||||||
|
resp = get(url, user=admin)
|
||||||
|
assert resp.data[key] == expected
|
||||||
|
|
||||||
|
patch(url, user=admin, data={
|
||||||
|
key: 'new-secret'
|
||||||
|
})
|
||||||
|
assert getattr(settings, key) == 'secret'
|
||||||
|
|
||||||
|
delete(url, user=admin)
|
||||||
|
assert getattr(settings, key) == 'secret'
|
||||||
|
|||||||
Reference in New Issue
Block a user