From 26ce3a477341e4535cb6f006a9cbacdb311c154f Mon Sep 17 00:00:00 2001 From: AlanCoding Date: Mon, 22 Aug 2016 14:41:55 -0400 Subject: [PATCH] avoid lookup of content_type for description when summarizing object_roles --- awx/api/serializers.py | 2 +- awx/main/models/rbac.py | 13 +++++++++---- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/awx/api/serializers.py b/awx/api/serializers.py index 2d2e38a8f5..f0daae75af 100644 --- a/awx/api/serializers.py +++ b/awx/api/serializers.py @@ -326,7 +326,7 @@ class BaseSerializer(serializers.ModelSerializer): roles[field.name] = { 'id': role.id, 'name': role.name, - 'description': role.description, + 'description': role.get_description(reference_content_object=obj), } if len(roles) > 0: summary_fields['object_roles'] = roles diff --git a/awx/main/models/rbac.py b/awx/main/models/rbac.py index 5e040b85a1..3cb016ffde 100644 --- a/awx/main/models/rbac.py +++ b/awx/main/models/rbac.py @@ -164,17 +164,22 @@ class Role(models.Model): global role_names return role_names[self.role_field] - @property - def description(self): + def get_description(self, reference_content_object=None): global role_descriptions description = role_descriptions[self.role_field] - if '%s' in description and self.content_type: - model = self.content_type.model_class() + if reference_content_object: + content_type = ContentType.objects.get_for_model(reference_content_object) + else: + content_type = self.content_type + if '%s' in description and content_type: + model = content_type.model_class() model_name = re.sub(r'([a-z])([A-Z])', r'\1 \2', model.__name__).lower() description = description % model_name return description + description = property(get_description) + @staticmethod def rebuild_role_ancestor_list(additions, removals): '''