## Script (Python) "getRetStudentStatistics"
##bind container=container
##bind context=context
##bind namespace=
##bind script=script
##bind subpath=traverse_subpath
##parameters=
##title=
##
# $Id: getStudentStatistics.py 1277 2007-01-11 21:11:37Z joachim $
"""
return Student Statistics
"""
import logging
logger = logging.getLogger('Student.Statistics')

try:
    from Products.AdvancedQuery import Eq, Between, Le,In, Ge
    aq_portal = context.portal_catalog.evalAdvancedQuery
    aq_students = context.students_catalog.evalAdvancedQuery
except:
    evalAdvancedQuery = None
logger.info('"%s","invoked returning statistics"' % context.portal_membership.getAuthenticatedMember())
l = []
if not context.isStaff():
    return l
dep = {}

dep['id'] = "All Faculties"

#from Products.zdb import set_trace;set_trace()

ret_res = context.portal_catalog(review_state ='returning')
ret_ids = [r.getId for r in ret_res]
total_returned = aq_students(Ge('level','200'))
total_returned = float(len(total_returned))
dep['returned'] = "%.0f" % total_returned

l.append(dep)
fs = context.portal_catalog(portal_type="Faculty")
for fid in [f.getId for f in fs]:
    dep = {}
    dep['id'] = fid
    fquery = Eq('faculty',fid)
    squery = Ge('level','200')
    fac_res = aq_students(fquery & squery)
    fac_ids = [r.id for r in fac_res]
    ret = len([s for s in fac_ids if s in ret_ids])
    dep['returned'] = ret

    if ret == 0:
        continue

    l.append(dep)

return l
