# HG changeset patch # User Sverre Rabbelier # Date 1238713588 0 # Node ID 45029d87be4a1984e633f98629eff0fecb9d1a81 # Parent 4037b147ed106c72d506e203620400bf3294d476 Add and use a getEntities method Patch by: Sverre Rabbelier diff -r 4037b147ed10 -r 45029d87be4a scripts/stats.py --- a/scripts/stats.py Thu Apr 02 23:06:15 2009 +0000 +++ b/scripts/stats.py Thu Apr 02 23:06:28 2009 +0000 @@ -73,69 +73,19 @@ result['%s_key' % fieldname] = target[fieldname].key().name() return result -def getOrgs(): - """Returns all orgs as dictionary. - """ - from soc.models.organization import Organization - - gen = lambda: Organization.all() - it = interactive.deepFetch(gen) - - orgs = [(i.key().name(), i) for i in it] - return dict(orgs) - - -def getUsers(): - """Returns all Users as dictionary. - """ - - from soc.models.user import User - - gen = lambda: User.all() - it = interactive.deepFetch(gen) - - users = [(i.key().name(), i) for i in it] - return dict(users) - - -def getStudents(): - """Returns all Students as dictionary. +def getEntities(model): + """Returns all users as dictionary. """ - from soc.models.student import Student - - gen = lambda: Student.all() - it = interactive.deepFetch(gen) - - students = [(i.key().name(), i) for i in it] - return dict(students) - - -def getMentors(): - """Returns all Mentors as dictionary. - """ - - from soc.models.mentor import Mentor + def wrapped(): + gen = lambda: model.all() + it = interactive.deepFetch(gen) - gen = lambda: Mentor.all() - it = interactive.deepFetch(gen) - - mentors = [(i.key().name(), i) for i in it] - return dict(mentors) - + entities = [(i.key().name(), i) for i in it] + return dict(entities) -def getOrgAdmins(): - """Returns all Organization Administrators as dictionary. - """ - - from soc.models.org_admin import OrgAdmin - - gen = lambda: OrgAdmin.all() - it = interactive.deepFetch(gen) - - orgAdmins = [(i.key().name(), i) for i in it] - return dict(orgAdmins) + return wrapped def getProps(): @@ -157,20 +107,6 @@ return proposals -def getStudentProposals(): - """Returns all Student Proposals as dictionary. - """ - - from soc.models.student_proposal import StudentProposal - - gen = lambda: StudentProposal.all() - it = interactive.deepFetch(gen) - - studentProposals = [(i.key().name(), i) for i in it] - - return dict(studentProposals) - - def orgStats(target): """Retrieves org stats. """ @@ -187,13 +123,13 @@ def countStudentsWithProposals(): """Retrieves number of Students who have submitted at least one Student Proposal. """ - + proposals = getStudentProposals() students = {} - + for proposal_key in proposals.keys(): students[proposals[proposal_key].scope_path] = True - + return len(students) @@ -250,20 +186,25 @@ interactive.setup() + from soc.models.organization import Organization + from soc.models.user import User + from soc.models.student import Student + from soc.models.mentor import Mentor + from soc.models.org_admin import OrgAdmin + context = { 'load': loadPickle, 'dump': dumpPickle, 'orgStats': orgStats, 'printPopularity': printPopularity, 'savePopularity': savePopularity, - 'getOrgs': getOrgs, + 'getOrgs': getEntities(Organization), + 'getUsers': getEntities(User), + 'getStudents': getEntities(Student), + 'getMentors': getEntities(Mentor), + 'getOrgAdmins': getEntities(OrgAdmins), 'getProps': getProps, - 'getStudents': getStudents, - 'getMentors': getMentors, - 'getOrgAdmins': getOrgAdmins, - 'getUsers': getUsers, - 'getStudentProposals': getStudentProposals, - 'countStudentsWithProposals': countStudentsWithProposals + 'countStudentsWithProposals': countStudentsWithProposals, } interactive.remote(args, context)