Allow null/blank input for boolean fields on projects. Fixes #791.

This commit is contained in:
Chris Church
2016-02-05 05:14:48 -05:00
parent 8b5e8be2e3
commit abc8da4531

View File

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