apply some speedups to credential list

This commit is contained in:
AlanCoding 2017-01-31 11:00:59 -05:00
parent 18898ac345
commit 2223901028
3 changed files with 11 additions and 6 deletions

View File

@ -1723,11 +1723,11 @@ class CredentialSerializer(BaseSerializer):
owner_teams = reverse('api:credential_owner_teams_list', args=(obj.pk,)),
))
parents = obj.admin_role.parents.exclude(object_id__isnull=True)
if parents.count() > 0:
parents = [role for role in obj.admin_role.parents.all() if role.object_id is not None]
if parents:
res.update({parents[0].content_type.name:parents[0].content_object.get_absolute_url()})
elif obj.admin_role.members.count() > 0:
user = obj.admin_role.members.first()
elif len(obj.admin_role.members.all()) > 0:
user = obj.admin_role.members.all()[0]
res.update({'user': reverse('api:user_detail', args=(user.pk,))})
return res
@ -1745,7 +1745,7 @@ class CredentialSerializer(BaseSerializer):
'url': reverse('api:user_detail', args=(user.pk,)),
})
for parent in obj.admin_role.parents.exclude(object_id__isnull=True).all():
for parent in [role for role in obj.admin_role.parents.all() if role.object_id is not None]:
summary_dict['owners'].append({
'id': parent.content_object.pk,
'type': camelcase_to_underscore(parent.content_object.__class__.__name__),

View File

@ -1434,6 +1434,7 @@ class CredentialList(ListCreateAPIView):
model = Credential
serializer_class = CredentialSerializerCreate
capabilities_prefetch = ['admin', 'use']
class CredentialOwnerUsersList(SubListAPIView):

View File

@ -817,7 +817,11 @@ class CredentialAccess(BaseAccess):
permitted to see.
"""
qs = self.model.accessible_objects(self.user, 'read_role')
return qs.select_related('created_by', 'modified_by').all()
qs = qs.select_related('created_by', 'modified_by')
qs = qs.prefetch_related(
'admin_role', 'use_role', 'read_role',
'admin_role__parents', 'admin_role__members')
return qs
@check_superuser
def can_read(self, obj):