## 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]


full_time =       ('ume_ft','de_ft','ug_ft','pg_ft')
part_time =       (         'de_pt','ug_pt','pg_pt')
diploma   =       ('dp_ft','dp_pt')


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

l = []

fac_res = {}

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


res_ft = context.students_catalog(mode = full_time)
dict['total_ft'] = len(res_ft)

res_pt = context.students_catalog(mode = part_time)
dict['total_pt'] = len(res_pt)

res_dp = context.students_catalog(mode = diploma)
dict['total_dp'] = len(res_dp)

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

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

res_Adp = context.students_catalog(review_state = catA, mode = diploma, session = current_session)
dict['total_Adp'] = len(res_Adp)

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

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

res_Bdp = context.students_catalog(review_state = catB, mode = diploma, session = current_session)
dict['total_Bdp'] = len(res_Bpt)

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

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

res_Cdp = context.students_catalog(review_state = catC, mode = diploma, session = current_session)
dict['total_Cdp'] = len(res_Cdp)


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'] - dict['total_dp']

l.append(dict)


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

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

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

    res_dp = context.students_catalog(faculty = f.getId, mode = diploma)
    dict['total_dp'] = len(res_dp)

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

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

    res_Adp = context.students_catalog(faculty = f.getId, review_state = catA, mode = diploma, session = current_session)
    dict['total_Adp'] = len(res_Adp)

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

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

    res_Bdp = context.students_catalog(faculty = f.getId, review_state = catB, mode = diploma, session = current_session)
    dict['total_Bdp'] = len(res_Bpt)

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

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

    res_Cdp = context.students_catalog(faculty = f.getId, review_state = catC, mode = diploma, session = current_session)
    dict['total_Cdp'] = len(res_Cdp)


    l.append(dict)

return l


