What once was an 800 query job is now a 17 query job, used to produce a 1.5M+ file, now produces one around 100K. Hurray efficiency
This commit is contained in:
parent
99ddafc6ad
commit
072f622876
2 changed files with 26 additions and 4 deletions
|
@ -321,7 +321,15 @@ class MakeShellAccounts(BaseClient):
|
||||||
params = {'search' : search}
|
params = {'search' : search}
|
||||||
request = self.send_request('group/list', auth=True, input=params)
|
request = self.send_request('group/list', auth=True, input=params)
|
||||||
self.groups = request['groups']
|
self.groups = request['groups']
|
||||||
self.memberships = request['memberships']
|
memberships = {}
|
||||||
|
for group in self.groups:
|
||||||
|
memberships[group['name']] = []
|
||||||
|
try:
|
||||||
|
for member in request['memberships'][u'%s' % group['id']]:
|
||||||
|
memberships[group['name']].append({'person_id': member})
|
||||||
|
except KeyError:
|
||||||
|
pass
|
||||||
|
self.memberships = memberships
|
||||||
self.valid_groups()
|
self.valid_groups()
|
||||||
return self.groups
|
return self.groups
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,7 @@ from turbogears import controllers, expose, paginate, identity, redirect, widget
|
||||||
from turbogears.database import session
|
from turbogears.database import session
|
||||||
|
|
||||||
import cherrypy
|
import cherrypy
|
||||||
|
import sqlalchemy
|
||||||
|
|
||||||
import fas
|
import fas
|
||||||
from fas.auth import *
|
from fas.auth import *
|
||||||
|
@ -253,12 +254,25 @@ class Group(controllers.Controller):
|
||||||
groups = []
|
groups = []
|
||||||
re_search = re.sub(r'\*', r'%', search).lower()
|
re_search = re.sub(r'\*', r'%', search).lower()
|
||||||
results = Groups.query.filter(Groups.name.like(re_search)).order_by('name').all()
|
results = Groups.query.filter(Groups.name.like(re_search)).order_by('name').all()
|
||||||
|
# memberships = session.query(PersonRoles).order_by(PersonRoles.sponsor_id).all()
|
||||||
|
membersql = sqlalchemy.select([PersonRoles.c.person_id, PersonRoles.c.group_id]).order_by(PersonRoles.c.group_id)
|
||||||
|
members = membersql.execute()
|
||||||
|
for member in members:
|
||||||
|
try:
|
||||||
|
memberships[member[1]].append(member[0])
|
||||||
|
except KeyError:
|
||||||
|
memberships[member[1]]=[member[0]]
|
||||||
for group in results:
|
for group in results:
|
||||||
if canViewGroup(person, group):
|
if canViewGroup(person, group):
|
||||||
groups.append(group)
|
groups.append(group)
|
||||||
if self.jsonRequest():
|
# if self.jsonRequest():
|
||||||
# Added an efficiency
|
# Adds efficiency
|
||||||
memberships[group.name] = group.approved_roles
|
#grp_members = session.query(Groups).filter_by(name=group.name).all()
|
||||||
|
# grp_members = session.query(PersonRoles).filter_by(group_id=group.id).all()
|
||||||
|
# memberships[group.name] = []
|
||||||
|
# for member in grp_members:
|
||||||
|
# memberships[group.name].append({'person_id': member.person_id})
|
||||||
|
# memberships[group.name] = group.approved_roles
|
||||||
if not len(groups):
|
if not len(groups):
|
||||||
turbogears.flash(_("No Groups found matching '%s'") % search)
|
turbogears.flash(_("No Groups found matching '%s'") % search)
|
||||||
return dict(groups=groups, search=search, memberships=memberships)
|
return dict(groups=groups, search=search, memberships=memberships)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue