mirror of
https://github.com/ansible/awx.git
synced 2026-03-20 02:17:37 -02:30
Fix browseable API errors with updated version of REST framework.
This commit is contained in:
@@ -9,7 +9,7 @@ class BrowsableAPIRenderer(renderers.BrowsableAPIRenderer):
|
|||||||
Customizations to the default browsable API renderer.
|
Customizations to the default browsable API renderer.
|
||||||
'''
|
'''
|
||||||
|
|
||||||
def get_form(self, view, method, request):
|
def get_rendered_html_form(self, view, method, request):
|
||||||
'''Never show auto-generated form (only raw form).'''
|
'''Never show auto-generated form (only raw form).'''
|
||||||
obj = getattr(view, 'object', None)
|
obj = getattr(view, 'object', None)
|
||||||
if not self.show_form_for_method(view, method, request, obj):
|
if not self.show_form_for_method(view, method, request, obj):
|
||||||
|
|||||||
@@ -93,7 +93,9 @@ class BaseSerializer(serializers.ModelSerializer):
|
|||||||
return ret
|
return ret
|
||||||
|
|
||||||
def get_url(self, obj):
|
def get_url(self, obj):
|
||||||
if isinstance(obj, User):
|
if obj is None:
|
||||||
|
return ''
|
||||||
|
elif isinstance(obj, User):
|
||||||
return reverse('main:user_detail', args=(obj.pk,))
|
return reverse('main:user_detail', args=(obj.pk,))
|
||||||
else:
|
else:
|
||||||
return obj.get_absolute_url()
|
return obj.get_absolute_url()
|
||||||
@@ -123,19 +125,25 @@ class BaseSerializer(serializers.ModelSerializer):
|
|||||||
return summary_fields
|
return summary_fields
|
||||||
|
|
||||||
def get_created(self, obj):
|
def get_created(self, obj):
|
||||||
if isinstance(obj, User):
|
if obj is None:
|
||||||
|
return None
|
||||||
|
elif isinstance(obj, User):
|
||||||
return obj.date_joined
|
return obj.date_joined
|
||||||
else:
|
else:
|
||||||
return obj.created
|
return obj.created
|
||||||
|
|
||||||
def get_modified(self, obj):
|
def get_modified(self, obj):
|
||||||
if isinstance(obj, User):
|
if obj is None:
|
||||||
|
return None
|
||||||
|
elif isinstance(obj, User):
|
||||||
return obj.last_login # Not actually exposed for User.
|
return obj.last_login # Not actually exposed for User.
|
||||||
else:
|
else:
|
||||||
return obj.modified
|
return obj.modified
|
||||||
|
|
||||||
def get_active(self, obj):
|
def get_active(self, obj):
|
||||||
if isinstance(obj, User):
|
if obj is None:
|
||||||
|
return False
|
||||||
|
elif isinstance(obj, User):
|
||||||
return obj.is_active
|
return obj.is_active
|
||||||
else:
|
else:
|
||||||
return obj.active
|
return obj.active
|
||||||
@@ -157,6 +165,7 @@ class UserSerializer(BaseSerializer):
|
|||||||
'last_name', 'email', 'is_superuser', 'password', 'ldap_dn')
|
'last_name', 'email', 'is_superuser', 'password', 'ldap_dn')
|
||||||
|
|
||||||
def to_native(self, obj):
|
def to_native(self, obj):
|
||||||
|
print obj
|
||||||
ret = super(UserSerializer, self).to_native(obj)
|
ret = super(UserSerializer, self).to_native(obj)
|
||||||
ret.pop('password', None)
|
ret.pop('password', None)
|
||||||
ret.fields.pop('password', None)
|
ret.fields.pop('password', None)
|
||||||
@@ -189,6 +198,8 @@ class UserSerializer(BaseSerializer):
|
|||||||
return super(UserSerializer, self).save_object(obj, **kwargs)
|
return super(UserSerializer, self).save_object(obj, **kwargs)
|
||||||
|
|
||||||
def get_related(self, obj):
|
def get_related(self, obj):
|
||||||
|
if obj is None:
|
||||||
|
return {}
|
||||||
res = super(UserSerializer, self).get_related(obj)
|
res = super(UserSerializer, self).get_related(obj)
|
||||||
res.update(dict(
|
res.update(dict(
|
||||||
teams = reverse('main:user_teams_list', args=(obj.pk,)),
|
teams = reverse('main:user_teams_list', args=(obj.pk,)),
|
||||||
@@ -236,6 +247,8 @@ class OrganizationSerializer(BaseSerializer):
|
|||||||
fields = BASE_FIELDS
|
fields = BASE_FIELDS
|
||||||
|
|
||||||
def get_related(self, obj):
|
def get_related(self, obj):
|
||||||
|
if obj is None:
|
||||||
|
return {}
|
||||||
res = super(OrganizationSerializer, self).get_related(obj)
|
res = super(OrganizationSerializer, self).get_related(obj)
|
||||||
res.update(dict(
|
res.update(dict(
|
||||||
#audit_trail = reverse('main:organization_audit_trail_list', args=(obj.pk,)),
|
#audit_trail = reverse('main:organization_audit_trail_list', args=(obj.pk,)),
|
||||||
@@ -283,6 +296,8 @@ class ProjectSerializer(BaseSerializer):
|
|||||||
return instance
|
return instance
|
||||||
|
|
||||||
def get_related(self, obj):
|
def get_related(self, obj):
|
||||||
|
if obj is None:
|
||||||
|
return {}
|
||||||
res = super(ProjectSerializer, self).get_related(obj)
|
res = super(ProjectSerializer, self).get_related(obj)
|
||||||
res.update(dict(
|
res.update(dict(
|
||||||
organizations = reverse('main:project_organizations_list', args=(obj.pk,)),
|
organizations = reverse('main:project_organizations_list', args=(obj.pk,)),
|
||||||
@@ -396,6 +411,8 @@ class ProjectUpdateSerializer(BaseSerializer):
|
|||||||
'result_traceback', 'job_args', 'job_cwd', 'job_env')
|
'result_traceback', 'job_args', 'job_cwd', 'job_env')
|
||||||
|
|
||||||
def get_related(self, obj):
|
def get_related(self, obj):
|
||||||
|
if obj is None:
|
||||||
|
return {}
|
||||||
res = super(ProjectUpdateSerializer, self).get_related(obj)
|
res = super(ProjectUpdateSerializer, self).get_related(obj)
|
||||||
res.update(dict(
|
res.update(dict(
|
||||||
project = reverse('main:project_detail', args=(obj.project.pk,)),
|
project = reverse('main:project_detail', args=(obj.project.pk,)),
|
||||||
@@ -424,6 +441,8 @@ class InventorySerializer(BaseSerializerWithVariables):
|
|||||||
'hosts_with_active_failures')
|
'hosts_with_active_failures')
|
||||||
|
|
||||||
def get_related(self, obj):
|
def get_related(self, obj):
|
||||||
|
if obj is None:
|
||||||
|
return {}
|
||||||
res = super(InventorySerializer, self).get_related(obj)
|
res = super(InventorySerializer, self).get_related(obj)
|
||||||
res.update(dict(
|
res.update(dict(
|
||||||
hosts = reverse('main:inventory_hosts_list', args=(obj.pk,)),
|
hosts = reverse('main:inventory_hosts_list', args=(obj.pk,)),
|
||||||
@@ -444,6 +463,8 @@ class HostSerializer(BaseSerializerWithVariables):
|
|||||||
'last_job', 'last_job_host_summary')
|
'last_job', 'last_job_host_summary')
|
||||||
|
|
||||||
def get_related(self, obj):
|
def get_related(self, obj):
|
||||||
|
if obj is None:
|
||||||
|
return {}
|
||||||
res = super(HostSerializer, self).get_related(obj)
|
res = super(HostSerializer, self).get_related(obj)
|
||||||
res.update(dict(
|
res.update(dict(
|
||||||
variable_data = reverse('main:host_variable_data', args=(obj.pk,)),
|
variable_data = reverse('main:host_variable_data', args=(obj.pk,)),
|
||||||
@@ -460,6 +481,8 @@ class HostSerializer(BaseSerializerWithVariables):
|
|||||||
return res
|
return res
|
||||||
|
|
||||||
def get_summary_fields(self, obj):
|
def get_summary_fields(self, obj):
|
||||||
|
if obj is None:
|
||||||
|
return {}
|
||||||
d = super(HostSerializer, self).get_summary_fields(obj)
|
d = super(HostSerializer, self).get_summary_fields(obj)
|
||||||
try:
|
try:
|
||||||
d['last_job']['job_template_id'] = obj.last_job.job_template.id
|
d['last_job']['job_template_id'] = obj.last_job.job_template.id
|
||||||
@@ -503,6 +526,8 @@ class GroupSerializer(BaseSerializerWithVariables):
|
|||||||
'hosts_with_active_failures')
|
'hosts_with_active_failures')
|
||||||
|
|
||||||
def get_related(self, obj):
|
def get_related(self, obj):
|
||||||
|
if obj is None:
|
||||||
|
return {}
|
||||||
res = super(GroupSerializer, self).get_related(obj)
|
res = super(GroupSerializer, self).get_related(obj)
|
||||||
res.update(dict(
|
res.update(dict(
|
||||||
variable_data = reverse('main:group_variable_data', args=(obj.pk,)),
|
variable_data = reverse('main:group_variable_data', args=(obj.pk,)),
|
||||||
@@ -533,12 +558,16 @@ class GroupTreeSerializer(GroupSerializer):
|
|||||||
'children')
|
'children')
|
||||||
|
|
||||||
def get_children(self, obj):
|
def get_children(self, obj):
|
||||||
|
if obj is None:
|
||||||
|
return {}
|
||||||
children_qs = obj.children.filter(active=True)
|
children_qs = obj.children.filter(active=True)
|
||||||
return GroupTreeSerializer(children_qs, many=True).data
|
return GroupTreeSerializer(children_qs, many=True).data
|
||||||
|
|
||||||
class BaseVariableDataSerializer(BaseSerializer):
|
class BaseVariableDataSerializer(BaseSerializer):
|
||||||
|
|
||||||
def to_native(self, obj):
|
def to_native(self, obj):
|
||||||
|
if obj is None:
|
||||||
|
return {}
|
||||||
ret = super(BaseVariableDataSerializer, self).to_native(obj)
|
ret = super(BaseVariableDataSerializer, self).to_native(obj)
|
||||||
try:
|
try:
|
||||||
return json.loads(ret.get('variables', '') or '{}')
|
return json.loads(ret.get('variables', '') or '{}')
|
||||||
@@ -597,6 +626,8 @@ class InventorySourceSerializer(BaseSerializer):
|
|||||||
return instance
|
return instance
|
||||||
|
|
||||||
def get_related(self, obj):
|
def get_related(self, obj):
|
||||||
|
if obj is None:
|
||||||
|
return {}
|
||||||
res = super(InventorySourceSerializer, self).get_related(obj)
|
res = super(InventorySourceSerializer, self).get_related(obj)
|
||||||
res.update(dict(
|
res.update(dict(
|
||||||
group = reverse('main:group_detail', args=(obj.group.pk,)),
|
group = reverse('main:group_detail', args=(obj.group.pk,)),
|
||||||
@@ -612,6 +643,8 @@ class InventorySourceSerializer(BaseSerializer):
|
|||||||
return res
|
return res
|
||||||
|
|
||||||
def get_summary_fields(self, obj):
|
def get_summary_fields(self, obj):
|
||||||
|
if obj is None:
|
||||||
|
return {}
|
||||||
d = super(InventorySourceSerializer, self).get_summary_fields(obj)
|
d = super(InventorySourceSerializer, self).get_summary_fields(obj)
|
||||||
return d
|
return d
|
||||||
|
|
||||||
@@ -625,6 +658,8 @@ class InventoryUpdateSerializer(BaseSerializer):
|
|||||||
'job_env')
|
'job_env')
|
||||||
|
|
||||||
def get_related(self, obj):
|
def get_related(self, obj):
|
||||||
|
if obj is None:
|
||||||
|
return {}
|
||||||
res = super(InventoryUpdateSerializer, self).get_related(obj)
|
res = super(InventoryUpdateSerializer, self).get_related(obj)
|
||||||
res.update(dict(
|
res.update(dict(
|
||||||
inventory_source = reverse('main:inventory_source_detail', args=(obj.inventory_source.pk,)),
|
inventory_source = reverse('main:inventory_source_detail', args=(obj.inventory_source.pk,)),
|
||||||
@@ -639,6 +674,8 @@ class TeamSerializer(BaseSerializer):
|
|||||||
fields = BASE_FIELDS + ('organization',)
|
fields = BASE_FIELDS + ('organization',)
|
||||||
|
|
||||||
def get_related(self, obj):
|
def get_related(self, obj):
|
||||||
|
if obj is None:
|
||||||
|
return {}
|
||||||
res = super(TeamSerializer, self).get_related(obj)
|
res = super(TeamSerializer, self).get_related(obj)
|
||||||
res.update(dict(
|
res.update(dict(
|
||||||
projects = reverse('main:team_projects_list', args=(obj.pk,)),
|
projects = reverse('main:team_projects_list', args=(obj.pk,)),
|
||||||
@@ -657,6 +694,8 @@ class PermissionSerializer(BaseSerializer):
|
|||||||
'permission_type',)
|
'permission_type',)
|
||||||
|
|
||||||
def get_related(self, obj):
|
def get_related(self, obj):
|
||||||
|
if obj is None:
|
||||||
|
return {}
|
||||||
res = super(PermissionSerializer, self).get_related(obj)
|
res = super(PermissionSerializer, self).get_related(obj)
|
||||||
if obj.user:
|
if obj.user:
|
||||||
res['user'] = reverse('main:user_detail', args=(obj.user.pk,))
|
res['user'] = reverse('main:user_detail', args=(obj.user.pk,))
|
||||||
@@ -715,6 +754,8 @@ class CredentialSerializer(BaseSerializer):
|
|||||||
return instance
|
return instance
|
||||||
|
|
||||||
def get_related(self, obj):
|
def get_related(self, obj):
|
||||||
|
if obj is None:
|
||||||
|
return {}
|
||||||
res = super(CredentialSerializer, self).get_related(obj)
|
res = super(CredentialSerializer, self).get_related(obj)
|
||||||
if obj.user:
|
if obj.user:
|
||||||
res['user'] = reverse('main:user_detail', args=(obj.user.pk,))
|
res['user'] = reverse('main:user_detail', args=(obj.user.pk,))
|
||||||
@@ -741,6 +782,8 @@ class JobTemplateSerializer(BaseSerializer):
|
|||||||
'extra_vars', 'job_tags', 'host_config_key')
|
'extra_vars', 'job_tags', 'host_config_key')
|
||||||
|
|
||||||
def get_related(self, obj):
|
def get_related(self, obj):
|
||||||
|
if obj is None:
|
||||||
|
return {}
|
||||||
res = super(JobTemplateSerializer, self).get_related(obj)
|
res = super(JobTemplateSerializer, self).get_related(obj)
|
||||||
res.update(dict(
|
res.update(dict(
|
||||||
inventory = reverse('main:inventory_detail', args=(obj.inventory.pk,)),
|
inventory = reverse('main:inventory_detail', args=(obj.inventory.pk,)),
|
||||||
@@ -775,6 +818,8 @@ class JobSerializer(BaseSerializer):
|
|||||||
'job_cwd', 'job_env')
|
'job_cwd', 'job_env')
|
||||||
|
|
||||||
def get_related(self, obj):
|
def get_related(self, obj):
|
||||||
|
if obj is None:
|
||||||
|
return {}
|
||||||
res = super(JobSerializer, self).get_related(obj)
|
res = super(JobSerializer, self).get_related(obj)
|
||||||
res.update(dict(
|
res.update(dict(
|
||||||
inventory = reverse('main:inventory_detail', args=(obj.inventory.pk,)),
|
inventory = reverse('main:inventory_detail', args=(obj.inventory.pk,)),
|
||||||
@@ -823,6 +868,8 @@ class JobHostSummarySerializer(BaseSerializer):
|
|||||||
'ok', 'processed', 'skipped', 'failed')
|
'ok', 'processed', 'skipped', 'failed')
|
||||||
|
|
||||||
def get_related(self, obj):
|
def get_related(self, obj):
|
||||||
|
if obj is None:
|
||||||
|
return {}
|
||||||
res = super(JobHostSummarySerializer, self).get_related(obj)
|
res = super(JobHostSummarySerializer, self).get_related(obj)
|
||||||
res.update(dict(
|
res.update(dict(
|
||||||
job=reverse('main:job_detail', args=(obj.job.pk,)),
|
job=reverse('main:job_detail', args=(obj.job.pk,)),
|
||||||
@@ -831,6 +878,8 @@ class JobHostSummarySerializer(BaseSerializer):
|
|||||||
return res
|
return res
|
||||||
|
|
||||||
def get_summary_fields(self, obj):
|
def get_summary_fields(self, obj):
|
||||||
|
if obj is None:
|
||||||
|
return {}
|
||||||
d = super(JobHostSummarySerializer, self).get_summary_fields(obj)
|
d = super(JobHostSummarySerializer, self).get_summary_fields(obj)
|
||||||
try:
|
try:
|
||||||
d['job']['job_template_id'] = obj.job.job_template.id
|
d['job']['job_template_id'] = obj.job.job_template.id
|
||||||
@@ -852,6 +901,8 @@ class JobEventSerializer(BaseSerializer):
|
|||||||
'play', 'task')
|
'play', 'task')
|
||||||
|
|
||||||
def get_related(self, obj):
|
def get_related(self, obj):
|
||||||
|
if obj is None:
|
||||||
|
return {}
|
||||||
res = super(JobEventSerializer, self).get_related(obj)
|
res = super(JobEventSerializer, self).get_related(obj)
|
||||||
res.update(dict(
|
res.update(dict(
|
||||||
job = reverse('main:job_detail', args=(obj.job.pk,)),
|
job = reverse('main:job_detail', args=(obj.job.pk,)),
|
||||||
@@ -868,6 +919,8 @@ class JobEventSerializer(BaseSerializer):
|
|||||||
return res
|
return res
|
||||||
|
|
||||||
def get_summary_fields(self, obj):
|
def get_summary_fields(self, obj):
|
||||||
|
if obj is None:
|
||||||
|
return {}
|
||||||
d = super(JobEventSerializer, self).get_summary_fields(obj)
|
d = super(JobEventSerializer, self).get_summary_fields(obj)
|
||||||
try:
|
try:
|
||||||
d['job']['job_template_id'] = obj.job.job_template.id
|
d['job']['job_template_id'] = obj.job.job_template.id
|
||||||
|
|||||||
Reference in New Issue
Block a user