mirror of
https://github.com/ansible/awx.git
synced 2026-03-28 22:35:08 -02:30
Expand dbconfig support
* Support updating settings values * Support activity stream endpoint * Support clearing value * Improve type conversion system for displaying values
This commit is contained in:
@@ -5,23 +5,13 @@ import json
|
||||
from django.conf import settings as django_settings
|
||||
from awx.main.models.configuration import TowerSettings
|
||||
|
||||
class TowerSettings(object):
|
||||
class TowerConfiguration(object):
|
||||
|
||||
def __getattr__(self, key):
|
||||
ts = TowerSettings.objects.filter(key=name)
|
||||
if not ts.exists:
|
||||
return getattr(django_settings, key)
|
||||
ts = ts[0]
|
||||
if ts.value_type == 'json':
|
||||
converted_type = json.loads(ts.value)
|
||||
elif ts.value_type == 'password':
|
||||
converted_type = ts.value
|
||||
elif ts.value_type == 'list':
|
||||
converted_type = [x.strip() for x in a.split(',')]
|
||||
else:
|
||||
t = getattr(__builtin__, ts.value_type)
|
||||
converted_type = t(ts.value)
|
||||
return converted_type
|
||||
return ts[0].value_converted
|
||||
|
||||
def create(key, value):
|
||||
settings_manifest = django_settings.TOWER_SETTINGS_MANIFEST
|
||||
|
||||
@@ -22,11 +22,23 @@ class Migration(SchemaMigration):
|
||||
))
|
||||
db.send_create_signal('main', ['TowerSettings'])
|
||||
|
||||
# Adding M2M table for field tower_settings on 'ActivityStream'
|
||||
m2m_table_name = db.shorten_name(u'main_activitystream_tower_settings')
|
||||
db.create_table(m2m_table_name, (
|
||||
('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
|
||||
('activitystream', models.ForeignKey(orm['main.activitystream'], null=False)),
|
||||
('towersettings', models.ForeignKey(orm['main.towersettings'], null=False))
|
||||
))
|
||||
db.create_unique(m2m_table_name, ['activitystream_id', 'towersettings_id'])
|
||||
|
||||
|
||||
def backwards(self, orm):
|
||||
# Deleting model 'TowerSettings'
|
||||
db.delete_table(u'main_towersettings')
|
||||
|
||||
# Removing M2M table for field tower_settings on 'ActivityStream'
|
||||
db.delete_table(db.shorten_name(u'main_activitystream_tower_settings'))
|
||||
|
||||
|
||||
models = {
|
||||
u'auth.group': {
|
||||
@@ -91,6 +103,7 @@ class Migration(SchemaMigration):
|
||||
'schedule': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['main.Schedule']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'team': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['main.Team']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'timestamp': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'tower_settings': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['main.TowerSettings']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'unified_job': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'activity_stream_as_unified_job+'", 'blank': 'True', 'to': "orm['main.UnifiedJob']"}),
|
||||
'unified_job_template': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'activity_stream_as_unified_job_template+'", 'blank': 'True', 'to': "orm['main.UnifiedJobTemplate']"}),
|
||||
'user': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.User']", 'symmetrical': 'False', 'blank': 'True'})
|
||||
|
||||
@@ -53,6 +53,7 @@ class ActivityStream(models.Model):
|
||||
ad_hoc_command = models.ManyToManyField("AdHocCommand", blank=True)
|
||||
schedule = models.ManyToManyField("Schedule", blank=True)
|
||||
custom_inventory_script = models.ManyToManyField("CustomInventoryScript", blank=True)
|
||||
tower_settings = models.ManyToManyField("TowerSettings", blank=True)
|
||||
|
||||
def get_absolute_url(self):
|
||||
return reverse('api:activity_stream_detail', args=(self.pk,))
|
||||
|
||||
@@ -20,6 +20,7 @@ class TowerSettings(CreatedModifiedModel):
|
||||
('int', _('Integer')),
|
||||
('float', _('Decimal')),
|
||||
('json', _('JSON')),
|
||||
('bool', _('Boolean')),
|
||||
('password', _('Password')),
|
||||
('list', _('List'))
|
||||
]
|
||||
@@ -43,3 +44,15 @@ class TowerSettings(CreatedModifiedModel):
|
||||
editable=False,
|
||||
)
|
||||
|
||||
@property
|
||||
def value_converted(self):
|
||||
if self.value_type == 'json':
|
||||
converted_type = json.loads(self.value)
|
||||
elif self.value_type == 'password':
|
||||
converted_type = self.value
|
||||
elif self.value_type == 'list':
|
||||
converted_type = [x.strip() for x in self.value.split(',')]
|
||||
else:
|
||||
t = __builtins__[self.value_type]
|
||||
converted_type = t(self.value)
|
||||
return converted_type
|
||||
|
||||
@@ -306,6 +306,7 @@ model_serializer_mapping = {
|
||||
JobTemplate: JobTemplateSerializer,
|
||||
Job: JobSerializer,
|
||||
AdHocCommand: AdHocCommandSerializer,
|
||||
TowerSettings: TowerSettingsSerializer,
|
||||
}
|
||||
|
||||
def activity_stream_create(sender, instance, created, **kwargs):
|
||||
|
||||
Reference in New Issue
Block a user