diff --git a/awx/api/serializers.py b/awx/api/serializers.py index f655b35f4e..e2d86b6e6f 100644 --- a/awx/api/serializers.py +++ b/awx/api/serializers.py @@ -772,13 +772,16 @@ class OrganizationSerializer(BaseSerializer): class ProjectOptionsSerializer(BaseSerializer): + scm_clean = serializers.NullBooleanField(default=False) + scm_delete_on_update = serializers.NullBooleanField(default=False) + class Meta: fields = ('*', 'local_path', 'scm_type', 'scm_url', 'scm_branch', 'scm_clean', 'scm_delete_on_update', 'credential') extra_kwargs = { 'scm_type': { - 'allow_null': True - } + 'allow_null': True, + }, } def get_related(self, obj): @@ -791,6 +794,12 @@ class ProjectOptionsSerializer(BaseSerializer): def validate_scm_type(self, value): return value or u'' + def validate_scm_clean(self, value): + return bool(value) + + def validate_scm_delete_on_update(self, value): + return bool(value) + def validate(self, attrs): errors = {} @@ -824,6 +833,7 @@ class ProjectSerializer(UnifiedJobTemplateSerializer, ProjectOptionsSerializer): playbooks = serializers.ReadOnlyField(help_text='Array of playbooks available within this project.') scm_delete_on_next_update = serializers.BooleanField(read_only=True) + scm_update_on_launch = serializers.NullBooleanField(default=False) status = serializers.ChoiceField(choices=Project.PROJECT_STATUS_CHOICES, read_only=True, required=False) last_update_failed = serializers.BooleanField(read_only=True) last_updated = serializers.DateTimeField(read_only=True) @@ -833,7 +843,9 @@ class ProjectSerializer(UnifiedJobTemplateSerializer, ProjectOptionsSerializer): fields = ('*', 'playbooks', 'scm_delete_on_next_update', 'scm_update_on_launch', 'scm_update_cache_timeout') + \ ('last_update_failed', 'last_updated') # Backwards compatibility - + + def clean_scm_update_on_launch(self, value): + return bool(value) def get_related(self, obj): res = super(ProjectSerializer, self).get_related(obj)