mirror of
https://github.com/ZwareBear/awx.git
synced 2026-04-23 16:31:50 -05:00
Merge branch 'devel' of github.com:ansible/ansible-tower into rbac
This commit is contained in:
@@ -21,7 +21,7 @@ from django.core.urlresolvers import reverse
|
||||
from django.core.exceptions import ObjectDoesNotExist, ValidationError as DjangoValidationError
|
||||
from django.db import models
|
||||
# from django.utils.translation import ugettext_lazy as _
|
||||
from django.utils.encoding import force_text, smart_text
|
||||
from django.utils.encoding import force_text
|
||||
from django.utils.text import capfirst
|
||||
|
||||
# Django REST Framework
|
||||
@@ -351,7 +351,6 @@ class BaseSerializer(serializers.ModelSerializer):
|
||||
return obj.modified
|
||||
|
||||
def build_standard_field(self, field_name, model_field):
|
||||
|
||||
# DRF 3.3 serializers.py::build_standard_field() -> utils/field_mapping.py::get_field_kwargs() short circuits
|
||||
# when a Model's editable field is set to False. The short circuit skips choice rendering.
|
||||
#
|
||||
@@ -368,27 +367,6 @@ class BaseSerializer(serializers.ModelSerializer):
|
||||
if was_editable is False:
|
||||
field_kwargs['read_only'] = True
|
||||
|
||||
# Update help text for common fields.
|
||||
opts = self.Meta.model._meta.concrete_model._meta
|
||||
if field_name == 'id':
|
||||
field_kwargs.setdefault('help_text', 'Database ID for this %s.' % smart_text(opts.verbose_name))
|
||||
elif field_name == 'name':
|
||||
field_kwargs['help_text'] = 'Name of this %s.' % smart_text(opts.verbose_name)
|
||||
elif field_name == 'description':
|
||||
field_kwargs['help_text'] = 'Optional description of this %s.' % smart_text(opts.verbose_name)
|
||||
elif field_name == 'type':
|
||||
field_kwargs['help_text'] = 'Data type for this %s.' % smart_text(opts.verbose_name)
|
||||
elif field_name == 'url':
|
||||
field_kwargs['help_text'] = 'URL for this %s.' % smart_text(opts.verbose_name)
|
||||
elif field_name == 'related':
|
||||
field_kwargs['help_text'] = 'Data structure with URLs of related resources.'
|
||||
elif field_name == 'summary_fields':
|
||||
field_kwargs['help_text'] = 'Data structure with name/description for related resources.'
|
||||
elif field_name == 'created':
|
||||
field_kwargs['help_text'] = 'Timestamp when this %s was created.' % smart_text(opts.verbose_name)
|
||||
elif field_name == 'modified':
|
||||
field_kwargs['help_text'] = 'Timestamp when this %s was last modified.' % smart_text(opts.verbose_name)
|
||||
|
||||
# Pass model field default onto the serializer field if field is not read-only.
|
||||
if model_field.has_default() and not field_kwargs.get('read_only', False):
|
||||
field_kwargs['default'] = field_kwargs['initial'] = model_field.get_default()
|
||||
@@ -414,6 +392,7 @@ class BaseSerializer(serializers.ModelSerializer):
|
||||
|
||||
# Update the message used for the unique validator to use capitalized
|
||||
# verbose name; keeps unique message the same as with DRF 2.x.
|
||||
opts = self.Meta.model._meta.concrete_model._meta
|
||||
for validator in field_kwargs.get('validators', []):
|
||||
if isinstance(validator, validators.UniqueValidator):
|
||||
unique_error_message = model_field.error_messages.get('unique', None)
|
||||
@@ -1662,6 +1641,7 @@ class JobTemplateSerializer(UnifiedJobTemplateSerializer, JobOptionsSerializer):
|
||||
d['can_copy'] = False
|
||||
d['can_edit'] = False
|
||||
d['recent_jobs'] = [{'id': x.id, 'status': x.status, 'finished': x.finished} for x in obj.jobs.order_by('-created')[:10]]
|
||||
d['labels'] = [{'id': x.id, 'name': x.name} for x in obj.labels.all().order_by('-name')[:10]]
|
||||
return d
|
||||
|
||||
def validate(self, attrs):
|
||||
@@ -1703,6 +1683,11 @@ class JobSerializer(UnifiedJobSerializer, JobOptionsSerializer):
|
||||
res['relaunch'] = reverse('api:job_relaunch', args=(obj.pk,))
|
||||
return res
|
||||
|
||||
def get_summary_fields(self, obj):
|
||||
d = super(JobSerializer, self).get_summary_fields(obj)
|
||||
d['labels'] = [{'id': x.id, 'name': x.name} for x in obj.labels.all().order_by('-name')[:10]]
|
||||
return d
|
||||
|
||||
def to_internal_value(self, data):
|
||||
# When creating a new job and a job template is specified, populate any
|
||||
# fields not provided in data from the job template.
|
||||
|
||||
Reference in New Issue
Block a user