##parameters=REQUEST
# $Id: display_session_results.py 1867 2007-06-08 09:59:59Z joachim $
"""
process the Application Form
return html renderer + psm
"""
import DateTime
current = DateTime.DateTime()
pr = context.portal_registration

validate = REQUEST.has_key("cpsdocument_create_button")

lt = context.portal_layouts
#pr = context.portal_registration

res,psm,ds = lt.renderLayout('student_session_results_search',
                             'student_returning',
                             context,
                             mapping=validate and REQUEST,
                             layout_mode='create',
                             ob = {},
                             commit=False,
                             formaction = "display_session_results",
                             button = "Search",
                             )
if psm == 'invalid':
    return context.display_session_results_form(rendered = res,
                                 psm = "Please correct your input!",
                                 #psm = "%s, %s" % (psm,ds),
                                 firstlayout = True,
                                 lastlayout = True,
                                 ds = ds,
                                 )
elif psm == '':
    return context.display_session_results_form(rendered = res,
                                 psm = None,
                                 firstlayout = True,
                                 lastlayout = True,
                                 ds = ds,
                                 )
elif psm == 'valid':
    pass
s_fields = context.returning_import.schema()
student_rec = ds.get('student')
student = {}
for field in s_fields:
    student[field] = getattr(student_rec,field)
brains = ds.get('results')
sem1 = []
sem2 = []
with_courses_cat = hasattr(context,'courses_catalog')

fields = context.results_import.schema()
verdict = None
session = None
for r in brains:
    if verdict is None:
        verdict = r.Verdict
        session = r.Session
    result = {}
    for field in fields:
        result[field] = getattr(r,field)
    if with_courses_cat:
        res = context.courses_catalog(code = r.CosCode)
    if r.CosCode == 'N/A':
        result['title'] = 'N/A'
    elif with_courses_cat and res:
        result['title'] = res[0].title
    else:
        result['title'] = "To Be Determined"
    if r.Semester == '2':
        sem2.append(result)
    else:
        sem1.append(result)
#from Products.zdb import set_trace;set_trace()
results = (sem1, sem2)
student['verdict'] = verdict
student['session'] = session
registered = None
res = context.returning_import(matric_no = student_rec.matric_no)
if res:
    student_id = res[0].id

    #There was one student with empty id in returning_import (BMS0406035)
    student_obj = None
    if student_id:
        student_obj = getattr(context.portal_url.getPortalObject().campus.students,student_id,None)
    else:
        registered = ' '

    if student_obj and hasattr(student_obj,'application'):
        registered = student_id
else:
    registered = "no_student_object"
return context.session_results_anon_view(student=student,
                                           results=results,
                                           name = "%(Firstname)s %(Middlename)s %(Lastname)s" % student_rec,
                                           registered = registered)

