## 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('Skins.getSimpleStudentStatistics')

logger.info('%s invoked statistics' % context.portal_membership.getAuthenticatedMember())
if not context.isStaff():
    return


catA =      (      'school_fee_paid',
                   'courses_registered',
                   'courses_validated',
                   )

catB =      (      'courses_registered',
                   'courses_validated',
                   )

catC =      (      'student_created',
                   'returning',
                   'admitted',
                   'clearance_pin_entered',
                   'objection_raised',
                   'clearance_requested',
                   'cleared_and_validated',
                   )

current_session = context.getSessionId()[0]


returning =  ('110','120','200','210','220','300','310','320','400','410','420','500','510', '520','500','510','520','610','620','700','710','720','800','810','820',)
new =        ('100','600')


faculties = context.portal_catalog(portal_type="Faculty")

l = []

fac_res = {}

dict = {}
dict['id'] = 'All Faculties'
dict['title'] = 'All Faculties'


res_ft = context.students_catalog(level = returning)
dict['total_ft'] = len(res_ft)

res_pt = context.students_catalog(level = new)
dict['total_pt'] = len(res_pt)

res_Aft = context.students_catalog(review_state = catA, level = returning, session = current_session)
dict['total_Aft'] = len(res_Aft)

res_Apt = context.students_catalog(review_state = catA, level = new, session = current_session)
dict['total_Apt'] = len(res_Apt)



res_Bft = context.students_catalog(review_state = catB, level = returning, session = current_session)
dict['total_Bft'] = len(res_Bft)

res_Bpt = context.students_catalog(review_state = catB, level = new, session = current_session)
dict['total_Bpt'] = len(res_Bpt)



res_Cft = context.students_catalog(review_state = catC, level = returning, session = current_session)
dict['total_Cft'] = len(res_Cft)

res_Cpt = context.students_catalog(review_state = catC, level = new, session = current_session)
dict['total_Cpt'] = len(res_Cpt)




res_total = context.students_catalog()
dict['total_in_catalog'] = len(res_total)
dict['not_categorized'] = dict['total_in_catalog'] - dict['total_ft'] - dict['total_pt']

l.append(dict)


for f in faculties:
    dict = {}
    dict['id'] = f.getId
    dict['title'] = f.Title

    res_ft = context.students_catalog(faculty = f.getId, level = returning)
    dict['total_ft'] = len(res_ft)

    res_pt = context.students_catalog(faculty = f.getId, level = new)
    dict['total_pt'] = len(res_pt)


    res_Aft = context.students_catalog(faculty = f.getId, review_state = catA, level = returning, session = current_session)
    dict['total_Aft'] = len(res_Aft)

    res_Apt = context.students_catalog(faculty = f.getId, review_state = catA, level = new, session = current_session)
    dict['total_Apt'] = len(res_Apt)



    res_Bft = context.students_catalog(faculty = f.getId, review_state = catB, level = returning, session = current_session)
    dict['total_Bft'] = len(res_Bft)

    res_Bpt = context.students_catalog(faculty = f.getId, review_state = catB, level = new, session = current_session)
    dict['total_Bpt'] = len(res_Bpt)



    res_Cft = context.students_catalog(faculty = f.getId, review_state = catC, level = returning, session = current_session)
    dict['total_Cft'] = len(res_Cft)

    res_Cpt = context.students_catalog(faculty = f.getId, review_state = catC, level = new, session = current_session)
    dict['total_Cpt'] = len(res_Cpt)




    l.append(dict)

return l

