From 97f16c777977500634f16b3c2475c09eb3d25dc6 Mon Sep 17 00:00:00 2001 From: Akita Noek Date: Sat, 26 Mar 2016 10:10:52 -0400 Subject: [PATCH] Added some select_related fields to a few endpoints so performance sucks less --- awx/api/views.py | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/awx/api/views.py b/awx/api/views.py index abcd06fc85..f59226196e 100644 --- a/awx/api/views.py +++ b/awx/api/views.py @@ -553,6 +553,11 @@ class OrganizationList(ListCreateAPIView): model = Organization serializer_class = OrganizationSerializer + def get_queryset(self): + qs = Organization.accessible_objects(self.request.user, {'read': True}) + qs = qs.select_related('admin_role', 'auditor_role', 'member_role') + return qs + def create(self, request, *args, **kwargs): """Create a new organzation. @@ -766,6 +771,11 @@ class TeamList(ListCreateAPIView): model = Team serializer_class = TeamSerializer + def get_queryset(self): + qs = Team.accessible_objects(self.request.user, {'read': True}) + qs = qs.select_related('admin_role', 'auditor_role', 'member_role') + return qs + class TeamDetail(RetrieveUpdateDestroyAPIView): model = Team @@ -866,6 +876,17 @@ class ProjectList(ListCreateAPIView): model = Project serializer_class = ProjectSerializer + def get_queryset(self): + projects_qs = Project.accessible_objects(self.request.user, {'read': True}) + projects_qs = projects_qs.select_related( + 'organization', + 'admin_role', + 'auditor_role', + 'member_role', + 'scm_update_role', + ) + return projects_qs + def get(self, request, *args, **kwargs): # Not optimal, but make sure the project status and last_updated fields # are up to date here... @@ -1248,6 +1269,11 @@ class InventoryList(ListCreateAPIView): model = Inventory serializer_class = InventorySerializer + def get_queryset(self): + qs = Inventory.accessible_objects(self.request.user, {'read': True}) + qs = qs.select_related('admin_role', 'auditor_role', 'updater_role', 'executor_role') + return qs + class InventoryDetail(RetrieveUpdateDestroyAPIView): model = Inventory