AC-537 Minor migration change, fix broken models/serializers.

This commit is contained in:
Chris Church
2013-10-29 12:06:48 -04:00
parent ddd5eb3b4e
commit 0c98b7ed69
5 changed files with 22 additions and 16 deletions

View File

@@ -31,7 +31,7 @@ class Migration(SchemaMigration):
# Adding field 'Credential.kind' # Adding field 'Credential.kind'
db.add_column(u'main_credential', 'kind', db.add_column(u'main_credential', 'kind',
self.gf('django.db.models.fields.CharField')(default='machine', max_length=32), self.gf('django.db.models.fields.CharField')(default='ssh', max_length=32),
keep_default=False) keep_default=False)
# Adding field 'Credential.username' # Adding field 'Credential.username'

View File

@@ -215,7 +215,7 @@ class Migration(DataMigration):
'created_by': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'related_name': '"{\'class\': \'credential\', \'app_label\': \'main\'}(class)s_created+"', 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': u"orm['auth.User']"}), 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'related_name': '"{\'class\': \'credential\', \'app_label\': \'main\'}(class)s_created+"', 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': u"orm['auth.User']"}),
'description': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}), 'description': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'kind': ('django.db.models.fields.CharField', [], {'default': "'machine'", 'max_length': '32'}), 'kind': ('django.db.models.fields.CharField', [], {'default': "'ssh'", 'max_length': '32'}),
'modified': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now', 'auto_now': 'True', 'blank': 'True'}), 'modified': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now', 'auto_now': 'True', 'blank': 'True'}),
'modified_by': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'related_name': '"{\'class\': \'credential\', \'app_label\': \'main\'}(class)s_modified+"', 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': u"orm['auth.User']"}), 'modified_by': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'related_name': '"{\'class\': \'credential\', \'app_label\': \'main\'}(class)s_modified+"', 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': u"orm['auth.User']"}),
'name': ('django.db.models.fields.CharField', [], {'max_length': '512'}), 'name': ('django.db.models.fields.CharField', [], {'max_length': '512'}),

View File

@@ -134,7 +134,7 @@ class Migration(SchemaMigration):
'created_by': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'related_name': '"{\'class\': \'credential\', \'app_label\': \'main\'}(class)s_created+"', 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': u"orm['auth.User']"}), 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'related_name': '"{\'class\': \'credential\', \'app_label\': \'main\'}(class)s_created+"', 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': u"orm['auth.User']"}),
'description': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}), 'description': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'kind': ('django.db.models.fields.CharField', [], {'default': "'machine'", 'max_length': '32'}), 'kind': ('django.db.models.fields.CharField', [], {'default': "'ssh'", 'max_length': '32'}),
'modified': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now', 'auto_now': 'True', 'blank': 'True'}), 'modified': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now', 'auto_now': 'True', 'blank': 'True'}),
'modified_by': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'related_name': '"{\'class\': \'credential\', \'app_label\': \'main\'}(class)s_modified+"', 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': u"orm['auth.User']"}), 'modified_by': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'related_name': '"{\'class\': \'credential\', \'app_label\': \'main\'}(class)s_modified+"', 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': u"orm['auth.User']"}),
'name': ('django.db.models.fields.CharField', [], {'max_length': '512'}), 'name': ('django.db.models.fields.CharField', [], {'max_length': '512'}),

View File

@@ -1050,7 +1050,7 @@ class Credential(CommonModelNameNotUnique):
('rax', _('Rackspace')), ('rax', _('Rackspace')),
] ]
PASSWORD_FIELDS = ('ssh_password', 'password', 'ssh_key_data', 'ssh_key_unlock', 'sudo_password') PASSWORD_FIELDS = ('password', 'ssh_key_data', 'ssh_key_unlock', 'sudo_password')
class Meta: class Meta:
app_label = 'main' app_label = 'main'
@@ -1075,7 +1075,7 @@ class Credential(CommonModelNameNotUnique):
kind = models.CharField( kind = models.CharField(
max_length=32, max_length=32,
choices=KIND_CHOICES, choices=KIND_CHOICES,
default='machine', default='ssh',
) )
#ssh_username = models.CharField( #ssh_username = models.CharField(
@@ -1134,8 +1134,8 @@ class Credential(CommonModelNameNotUnique):
) )
@property @property
def needs_ssh_password(self): def needs_password(self):
return not self.ssh_key_data and self.ssh_password == 'ASK' return not self.ssh_key_data and self.password == 'ASK'
@property @property
def needs_ssh_key_unlock(self): def needs_ssh_key_unlock(self):
@@ -1149,7 +1149,7 @@ class Credential(CommonModelNameNotUnique):
@property @property
def passwords_needed(self): def passwords_needed(self):
needed = [] needed = []
for field in ('ssh_password', 'sudo_password', 'ssh_key_unlock'): for field in ('password', 'sudo_password', 'ssh_key_unlock'):
if getattr(self, 'needs_%s' % field): if getattr(self, 'needs_%s' % field):
needed.append(field) needed.append(field)
return needed return needed
@@ -1552,6 +1552,9 @@ class ProjectUpdate(CommonTask):
editable=False, editable=False,
) )
def get_absolute_url(self):
return reverse('main:project_update_detail', args=(self.pk,))
def _get_parent_instance(self): def _get_parent_instance(self):
return self.project return self.project

View File

@@ -59,7 +59,7 @@ SUMMARIZABLE_FK_FIELDS = {
'groups_with_active_failures', 'groups_with_active_failures',
'has_inventory_sources'), 'has_inventory_sources'),
'project': DEFAULT_SUMMARY_FIELDS + ('status',), 'project': DEFAULT_SUMMARY_FIELDS + ('status',),
'credential': DEFAULT_SUMMARY_FIELDS, 'credential': DEFAULT_SUMMARY_FIELDS + ('kind',),
'permission': DEFAULT_SUMMARY_FIELDS, 'permission': DEFAULT_SUMMARY_FIELDS,
'job': DEFAULT_SUMMARY_FIELDS + ('status', 'failed',), 'job': DEFAULT_SUMMARY_FIELDS + ('status', 'failed',),
'job_template': DEFAULT_SUMMARY_FIELDS, 'job_template': DEFAULT_SUMMARY_FIELDS,
@@ -883,6 +883,8 @@ class CredentialSerializer(BaseSerializer):
def validate(self, attrs): def validate(self, attrs):
''' some fields cannot be changed once written ''' ''' some fields cannot be changed once written '''
return attrs
# FIXME: Don't need this anymore?
if self.object is not None: if self.object is not None:
# this is an update # this is an update
if 'user' in attrs and self.object.user != attrs['user']: if 'user' in attrs and self.object.user != attrs['user']:
@@ -927,13 +929,14 @@ class JobSerializer(BaseSerializer):
class Meta: class Meta:
model = Job model = Job
fields = BASE_FIELDS + ('job_template', 'job_type', 'inventory', fields = ('id', 'url', 'related', 'summary_fields', 'created',
'project', 'playbook', 'credential', 'modified', 'job_template', 'job_type', 'inventory',
'forks', 'limit', 'verbosity', 'extra_vars', 'project', 'playbook', 'credential',
'job_tags', 'launch_type', 'status', 'failed', 'forks', 'limit', 'verbosity', 'extra_vars',
'result_stdout', 'result_traceback', 'job_tags', 'launch_type', 'status', 'failed',
'passwords_needed_to_start', 'job_args', 'result_stdout', 'result_traceback',
'job_cwd', 'job_env') 'passwords_needed_to_start', 'job_args',
'job_cwd', 'job_env')
def get_related(self, obj): def get_related(self, obj):
if obj is None: if obj is None: