mirror of
https://github.com/ansible/awx.git
synced 2026-02-20 20:50:06 -03:30
Merge pull request #156 from chrismeyersfsu/fix-relaunch
Prevent relaunching job with deleted credential
This commit is contained in:
@@ -1503,16 +1503,40 @@ class JobCancelSerializer(JobSerializer):
|
||||
|
||||
|
||||
class JobRelaunchSerializer(JobSerializer):
|
||||
passwords_needed_to_start = serializers.SerializerMethodField('get_passwords_needed_to_start')
|
||||
|
||||
class Meta:
|
||||
fields = ()
|
||||
fields = ('passwords_needed_to_start',)
|
||||
|
||||
def to_native(self, obj):
|
||||
if obj:
|
||||
return dict([(p, u'') for p in obj.passwords_needed_to_start])
|
||||
else:
|
||||
return {}
|
||||
res = super(JobRelaunchSerializer, self).to_native(obj)
|
||||
view = self.context.get('view', None)
|
||||
if hasattr(view, '_raw_data_form_marker'):
|
||||
password_keys = dict([(p, u'') for p in self.get_passwords_needed_to_start(obj)])
|
||||
res.update(password_keys)
|
||||
return res
|
||||
|
||||
def get_passwords_needed_to_start(self, obj):
|
||||
if obj:
|
||||
return obj.passwords_needed_to_start
|
||||
return ''
|
||||
|
||||
def validate_passwords_needed_to_start(self, attrs, source):
|
||||
obj = self.context.get('obj')
|
||||
data = self.context.get('data')
|
||||
|
||||
# Check for passwords needed
|
||||
needed = self.get_passwords_needed_to_start(obj)
|
||||
provided = dict([(field, data.get(field, '')) for field in needed])
|
||||
if not all(provided.values()):
|
||||
raise serializers.ValidationError(needed)
|
||||
return attrs
|
||||
|
||||
def validate(self, attrs):
|
||||
obj = self.context.get('obj')
|
||||
if not obj.credential or obj.credential.active is False:
|
||||
raise serializers.ValidationError(dict(credential=["Credential not found or deleted."]))
|
||||
return attrs
|
||||
|
||||
class AdHocCommandSerializer(UnifiedJobSerializer):
|
||||
|
||||
|
||||
Reference in New Issue
Block a user