## Script (Python) "getRegStatistics"
##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
    students_catalog = context.students_catalog
except:
    evalAdvancedQuery = None
logger.info('"%s","invoked reg statistics"' % context.portal_membership.getAuthenticatedMember())
l = []
if not context.isStaff():
    return l
dep = {}

dep['id'] = "All Faculties"

total = float(len(students_catalog))

dep['total'] = "%.0f" % total


#from Products.zdb import set_trace;set_trace()

sfp_res = context.portal_catalog(review_state ='school_fee_paid')
sfp_ids = [r.getId for r in sfp_res]
sfp = len(sfp_res)
dep['school_fee_paid'] = sfp
dep['school_fee_paid_percent'] =  "%.0f" % round(sfp*100/total)

creg_res = context.portal_catalog(review_state ='courses_registered')
creg_ids = [r.getId for r in creg_res]
creg = len(creg_res)
dep['courses_registered'] = creg
dep['courses_registered_percent'] = "%.0f" % round(creg*100/total)

cval_res = context.portal_catalog(review_state='courses_validated')
cval_ids = [r.getId for r in cval_res]
cval = len(cval_res)
dep['courses_validated'] = cval
dep['courses_validated_percent'] = "%.0f" % round(cval*100/total)


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)
    fac_res = students_catalog(faculty = fid)
    fac_ids = [r.id for r in fac_res]
    total = float(len(fac_res))

    if total == 0:
        continue

    dep['total'] = "%.0f" % total

    sfp = len([s for s in fac_ids if s in sfp_ids])
    dep['school_fee_paid'] = sfp
    dep['school_fee_paid_percent'] = 0
    if total:
        dep['school_fee_paid_percent'] = "%.0f" % round(sfp*100/total)

    creg = len([s for s in fac_ids if s in creg_ids])
    dep['courses_registered'] = creg
    dep['courses_registered_percent'] = 0
    if total:
        dep['courses_registered_percent'] = "%.0f" % round(creg*100/total)
        
    cval = len([s for s in fac_ids if s in cval_ids])
    dep['courses_validated'] = cval
    dep['courses_validated_percent'] = 0
    if total:
        dep['courses_validated_percent'] = "%.0f" % round(cval*100/total)

    l.append(dep)

return l

