Merge branch 'devel' of github.com:ansible/ansible-tower into credential-api

This commit is contained in:
Akita Noek
2016-04-04 13:12:29 -04:00
6 changed files with 15 additions and 7 deletions

View File

@@ -2124,6 +2124,10 @@ class NotifierSerializer(BaseSerializer):
incorrect_type_fields = [] incorrect_type_fields = []
if 'notification_configuration' not in attrs: if 'notification_configuration' not in attrs:
return attrs return attrs
if self.context['view'].kwargs:
object_actual = self.context['view'].get_object()
else:
object_actual = None
for field in notification_class.init_parameters: for field in notification_class.init_parameters:
if field not in attrs['notification_configuration']: if field not in attrs['notification_configuration']:
missing_fields.append(field) missing_fields.append(field)
@@ -2134,8 +2138,8 @@ class NotifierSerializer(BaseSerializer):
if not type(field_val) in expected_types: if not type(field_val) in expected_types:
incorrect_type_fields.append((field, field_type)) incorrect_type_fields.append((field, field_type))
continue continue
if field_type == "password" and field_val.startswith('$encrypted$'): if field_type == "password" and field_val == "$encrypted$" and object_actual is not None:
missing_fields.append(field) attrs['notification_configuration'][field] = object_actual.notification_configuration[field]
error_list = [] error_list = []
if missing_fields: if missing_fields:
error_list.append("Missing required fields for Notification Configuration: {}".format(missing_fields)) error_list.append("Missing required fields for Notification Configuration: {}".format(missing_fields))

View File

@@ -286,7 +286,8 @@ v1_urls = patterns('awx.api.views',
url(r'^me/$', 'user_me_list'), url(r'^me/$', 'user_me_list'),
url(r'^dashboard/$', 'dashboard_view'), url(r'^dashboard/$', 'dashboard_view'),
url(r'^dashboard/graphs/jobs/$','dashboard_jobs_graph_view'), url(r'^dashboard/graphs/jobs/$','dashboard_jobs_graph_view'),
url(r'^settings/', include(settings_urls)), # TODO: Uncomment aftger 3.0 when we bring database settings endpoints back
# url(r'^settings/', include(settings_urls)),
url(r'^schedules/', include(schedule_urls)), url(r'^schedules/', include(schedule_urls)),
url(r'^organizations/', include(organization_urls)), url(r'^organizations/', include(organization_urls)),
url(r'^users/', include(user_urls)), url(r'^users/', include(user_urls)),

View File

@@ -112,7 +112,8 @@ class ApiV1RootView(APIView):
data['authtoken'] = reverse('api:auth_token_view') data['authtoken'] = reverse('api:auth_token_view')
data['ping'] = reverse('api:api_v1_ping_view') data['ping'] = reverse('api:api_v1_ping_view')
data['config'] = reverse('api:api_v1_config_view') data['config'] = reverse('api:api_v1_config_view')
data['settings'] = reverse('api:settings_list') # TODO: Uncomment after 3.0 when we bring database settings endpoints back
# data['settings'] = reverse('api:settings_list')
data['me'] = reverse('api:user_me_list') data['me'] = reverse('api:user_me_list')
data['dashboard'] = reverse('api:dashboard_view') data['dashboard'] = reverse('api:dashboard_view')
data['organizations'] = reverse('api:organization_list') data['organizations'] = reverse('api:organization_list')

View File

@@ -68,6 +68,8 @@ class Notifier(CommonModel):
update_fields = kwargs.get('update_fields', []) update_fields = kwargs.get('update_fields', [])
for field in filter(lambda x: self.notification_class.init_parameters[x]['type'] == "password", for field in filter(lambda x: self.notification_class.init_parameters[x]['type'] == "password",
self.notification_class.init_parameters): self.notification_class.init_parameters):
if self.notification_configuration[field].startswith("$encrypted$"):
continue
if new_instance: if new_instance:
value = self.notification_configuration[field] value = self.notification_configuration[field]
setattr(self, '_saved_{}_{}'.format("config", field), value) setattr(self, '_saved_{}_{}'.format("config", field), value)
@@ -84,7 +86,6 @@ class Notifier(CommonModel):
self.notification_class.init_parameters): self.notification_class.init_parameters):
saved_value = getattr(self, '_saved_{}_{}'.format("config", field), '') saved_value = getattr(self, '_saved_{}_{}'.format("config", field), '')
self.notification_configuration[field] = saved_value self.notification_configuration[field] = saved_value
#setattr(self.notification_configuration, field, saved_value)
if 'notification_configuration' not in update_fields: if 'notification_configuration' not in update_fields:
update_fields.append('notification_configuration') update_fields.append('notification_configuration')
self.save(update_fields=update_fields) self.save(update_fields=update_fields)

View File

@@ -46,7 +46,8 @@ TEST_TOWER_SETTINGS_MANIFEST = {
} }
@override_settings(TOWER_SETTINGS_MANIFEST=TEST_TOWER_SETTINGS_MANIFEST) @override_settings(TOWER_SETTINGS_MANIFEST=TEST_TOWER_SETTINGS_MANIFEST)
class SettingsTest(BaseTest): @pytest.mark.skip(reason="Settings deferred to 3.1")
class SettingsPlaceholder(BaseTest):
def setUp(self): def setUp(self):
super(SettingsTest, self).setUp() super(SettingsTest, self).setUp()

View File

@@ -16,7 +16,7 @@ class TestApiV1RootView:
'authtoken', 'authtoken',
'ping', 'ping',
'config', 'config',
'settings', #'settings',
'me', 'me',
'dashboard', 'dashboard',
'organizations', 'organizations',