## Script (Python) "getNewStudentStatistics"
##bind container=container
##bind context=context
##bind namespace=
##bind script=script
##bind subpath=traverse_subpath
##parameters=
##title=
##
# $Id: ti_182_resolve.py 1672 2007-04-07 16:31:30Z joachim $
"""
resolve ticket #182
"""
try:
    from Products.zdb import set_trace
except:
    def set_trace():
        pass
import logging
#>>>>>>>>>>>>>>>><
logger = logging.getLogger('Skins.ti_182_resolve')
#logger.info('already done on 26.3.07 by joachim')
#return
#<<<<<<<<<<<<<<<<<
request = context.REQUEST
session = request.SESSION
response = request.RESPONSE
setheader = request.RESPONSE.setHeader
students = context.portal_url.getPortalObject().campus.students
#from string import Template
def intersect(m,n):
    return [i for i in m if i in n]

def rwrite(s):
    response.setHeader('Content-type','text/html; charset=ISO-8859-15')
    response.write("%s<br>\n\r" % s)
def getObject(outer,object):
    if outer.hasObject(object):
        return getattr(outer,object)
    return None
try:
    from Products.AdvancedQuery import Eq, Between, Le,In, Ge,MatchRegexp
    aq_portal = context.portal_catalog.evalAdvancedQuery
    aq_students = context.students_catalog.evalAdvancedQuery
except:
    evalAdvancedQuery = None


#freshquery = Eq('level','100') | (Eq('level','200') & Eq('entry_mode','DE'))
#total_new = aq_students(freshquery)
##query = In('review_state',('cleared_and_validated',
##                           'school_fee_paid',
##                           'courses_registered',
##                           'courses_validated'))
##cleared = aq_portal(query)
##rwrite("Cleared and beyond students: %d" % len(cleared))
##cleared_ids = [s.getId for s in cleared]
newquery = Eq('portal_type','StudentApplication') & MatchRegexp('SearchableText',r'^6*')
new_students = aq_portal(newquery)
new_ids = [r.getPath().split('/')[-2] for r in new_students]
rwrite("New students: %d" % len(new_ids))
#diff_new_cleared = [i for i in new_ids if i not in cleared_ids]  
#diff_cleared_new = [i for i in cleared_ids if i not in new_ids]  
##special_states =  ('admitted',
##                   'clearance_pin_entered',
##                   'clearance_requested',
##                   'cleared_and_validated',
##                   'objection_raised',
##                   )
##special_query = In('review_state',special_states)
##special = aq_portal(special_query)
##special_ids = [s.getId for s in special]
##rwrite("New special students: %d" % len(special_ids))
admitted_query = Eq('review_state','admitted')
admitted = aq_portal(admitted_query)
admitted_ids = [s.getId for s in admitted]
rwrite("Admitted students: %d" % len(admitted_ids))
##faculties = context.portal_catalog(portal_type="Faculty")
##fac_ids = [f.getId for f in faculties]
##fac_query = In('faculty',fac_ids)
##faculties_students = aq_students(fac_query)
##faculties_student_ids = [s.id for s in faculties_students]
##set_trace()
count = 0
for sid in admitted_ids:
    if sid not in new_ids:
        if not count:
            rwrite('Students with review_state admitted and jamb_reg_no not beginning with 6') 
        count += 1
        erg = context.students_catalog(id=sid)
        if not erg:
            set_trace()
            continue
        student = erg[0]
        dict = context.getFormattedStudentEntry(student)
        dict['count'] = count
        dict['review_state'] = 'admitted'
        rwrite('"%(count)d","%(id)s","%(name)s","%(jamb_reg_no)s","%(faculty)s","%(entry_mode)s,"%(review_state)s,"%(level)s",' % dict)
        
##retcount = 0
##count = 0
##newc = 0
###set_trace()
##for student in cleared:
##    erg = context.students_catalog(id=student.getId)
##    if not erg:
##        set_trace()
##        continue
##    if not erg[0].jamb_reg_no.startswith('6'):
##        retcount += 1
##        continue
##    newc += 1
##    if not student.getId in special_ids:
##        count += 1
####        dict = context.getFormattedStudentEntry(student)
####        dict['review_state'] = 'unknown'
####        dict['count'] = count
####        res = context.portal_catalog(portal_type='Student',id = student.getId)
####        if res:
####            rs = dict['review_state'] = res[0].review_state
####            rwrite('"%(count)d","%(id)s","%(name)s","%(jamb_reg_no)s","%(matric_no)s","%(entry_mode)s,"%(level)s","%(review_state)s"' % dict)
##rwrite("Cleared not in special: %d" % count)
##rwrite("Returning students: %d" % retcount)
##rwrite("New cleared students: %d" % newc)
rwrite("Finished")

