diff --git a/awx/api/serializers.py b/awx/api/serializers.py index f993a49c56..14d74af424 100644 --- a/awx/api/serializers.py +++ b/awx/api/serializers.py @@ -4938,10 +4938,6 @@ class ActivityStreamSerializer(BaseSerializer): def get_related(self, obj): rel = {} - VIEW_NAME_EXCEPTIONS = { - 'custom_inventory_script': 'inventory_script_detail', - 'o_auth2_access_token': 'o_auth2_token_detail' - } if obj.actor is not None: rel['actor'] = self.reverse('api:user_detail', kwargs={'pk': obj.actor.pk}) for fk, __ in self._local_summarizable_fk_fields: @@ -4955,11 +4951,12 @@ class ActivityStreamSerializer(BaseSerializer): if getattr(thisItem, 'id', None) in id_list: continue id_list.append(getattr(thisItem, 'id', None)) - if fk in VIEW_NAME_EXCEPTIONS: - view_name = VIEW_NAME_EXCEPTIONS[fk] + if hasattr(thisItem, 'get_absolute_url'): + rel_url = thisItem.get_absolute_url(self.context.get('request')) else: view_name = fk + '_detail' - rel[fk].append(self.reverse('api:' + view_name, kwargs={'pk': thisItem.id})) + rel_url = self.reverse('api:' + view_name, kwargs={'pk': thisItem.id}) + rel[fk].append(rel_url) if fk == 'schedule': rel['unified_job_template'] = thisItem.unified_job_template.get_absolute_url(self.context.get('request')) diff --git a/awx/main/models/__init__.py b/awx/main/models/__init__.py index 6541a8f9ed..135cb9d899 100644 --- a/awx/main/models/__init__.py +++ b/awx/main/models/__init__.py @@ -134,6 +134,9 @@ User.add_to_class('is_in_enterprise_category', user_is_in_enterprise_category) def o_auth2_application_get_absolute_url(self, request=None): + # this page does not exist in v1 + if request.version == 'v1': + return reverse('api:o_auth2_application_detail', kwargs={'pk': self.pk}) # use default version return reverse('api:o_auth2_application_detail', kwargs={'pk': self.pk}, request=request) @@ -141,6 +144,9 @@ OAuth2Application.add_to_class('get_absolute_url', o_auth2_application_get_absol def o_auth2_token_get_absolute_url(self, request=None): + # this page does not exist in v1 + if request.version == 'v1': + return reverse('api:o_auth2_token_detail', kwargs={'pk': self.pk}) # use default version return reverse('api:o_auth2_token_detail', kwargs={'pk': self.pk}, request=request) diff --git a/awx/main/models/credential/__init__.py b/awx/main/models/credential/__init__.py index 1de7b76c52..aa89f41574 100644 --- a/awx/main/models/credential/__init__.py +++ b/awx/main/models/credential/__init__.py @@ -479,6 +479,9 @@ class CredentialType(CommonModelNameNotUnique): ) def get_absolute_url(self, request=None): + # Page does not exist in API v1 + if request.version == 'v1': + return reverse('api:credential_type_detail', kwargs={'pk': self.pk}) return reverse('api:credential_type_detail', kwargs={'pk': self.pk}, request=request) @property