Optimize lookup of org membership on prototype and perms APIs
Fixes a major slowdown when working with permissions under organizations with a lot of members Fixes https://www.pivotaltracker.com/story/show/144076113
This commit is contained in:
parent
f5e4380a57
commit
db767b3610
3 changed files with 37 additions and 17 deletions
|
@ -133,7 +133,10 @@ class PermissionPrototypeList(ApiResource):
|
|||
raise NotFound()
|
||||
|
||||
permissions = model.permission.get_prototype_permissions(org)
|
||||
org_members = model.organization.get_organization_member_set(orgname)
|
||||
|
||||
users_filter = ({p.activating_user for p in permissions} |
|
||||
{p.delegate_user for p in permissions})
|
||||
org_members = model.organization.get_organization_member_set(org, users_filter=users_filter)
|
||||
return {'prototypes': [prototype_view(p, org_members) for p in permissions]}
|
||||
|
||||
raise Unauthorized()
|
||||
|
@ -180,7 +183,9 @@ class PermissionPrototypeList(ApiResource):
|
|||
prototype = model.permission.add_prototype_permission(org, role_name, activating_user,
|
||||
delegate_user, delegate_team)
|
||||
log_prototype_action('create_prototype_permission', orgname, prototype)
|
||||
org_members = model.organization.get_organization_member_set(orgname)
|
||||
|
||||
users_filter = {prototype.activating_user, prototype.delegate_user}
|
||||
org_members = model.organization.get_organization_member_set(org, users_filter=users_filter)
|
||||
return prototype_view(prototype, org_members)
|
||||
|
||||
raise Unauthorized()
|
||||
|
@ -257,7 +262,9 @@ class PermissionPrototype(ApiResource):
|
|||
|
||||
log_prototype_action('modify_prototype_permission', orgname, prototype,
|
||||
original_role=existing.role.name)
|
||||
org_members = model.organization.get_organization_member_set(orgname)
|
||||
|
||||
users_filter = {prototype.activating_user, prototype.delegate_user}
|
||||
org_members = model.organization.get_organization_member_set(org, users_filter=users_filter)
|
||||
return prototype_view(prototype, org_members)
|
||||
|
||||
raise Unauthorized()
|
||||
|
|
Reference in a new issue