##parameters=REQUEST=None
# $Id: eligibility.py 191 2005-11-17 14:24:09Z henrik $
"""
process the Admission Form
return html renderer + psm
"""
request = REQUEST
rget = request.get
rset = request.set
fget = request.form.get
form = request.form
fhas = request.form.has_key


lt = context.portal_layouts
pr = context.portal_registration
pm = context.portal_membership
eli = context.ELIGIBILITY.getContent()
sr = eli.schoolresults

validate = fhas('add') or fhas('change') or fhas('delete')
data = {'faculty': eli.faculty,
        'course': eli.course,
        'jamb_aggregate': eli.jamb_aggregate,
        }
res,psm,ds = lt.renderLayout(layout_id= 'student_eligibility',
                      schema_id= 'student_eligibility',
                      context=context,
                      mapping=validate and request,
                      ob=data,
                      layout_mode='create',
                      formaction = "eligibility",
                      schoolresults = sr,
                      )
if psm == 'invalid':
    return context.eligibility_form(rendered = res,
                                 psm = 'Please correct your errors',
                                 ds = ds,
                                 )
elif psm == '':
    return context.eligibility_form(rendered = res,
                                 psm = psm,
                                 ds = ds,
                                 )
inr = 0
if fhas('add') and (fget('type') or fget('subject') or fget('result')):
    sr.append((fget('type'),fget('subject'),fget('result')))
    psm = "new result added"
elif fhas('change') and fget('keys'):
    for k in fget('keys'):
        sr[int(k)] = (fget('type_%s' % k),fget('subject_%s' % k),fget('result_%s' % k))
        inr += 1
    psm = "%s items changed" % inr
elif fhas('delete') and fget('keys'):
    new = []
    todelete = fget('keys')
    for k in range(len(sr)):
        if str(k) not in todelete:
            new.append(sr[k])
    inr = len(todelete)
    sr = new
    psm = "%s items deleted" % inr
elif psm == 'valid':
    psm = "Your changes have been saved."

ds.set('schoolresults',sr)
eli.edit(mapping=ds)
res,dummy,fds = lt.renderLayout(layout_id= 'student_eligibility',
                      schema_id= 'student_eligibility',
                      context=context,
                      mapping=request,
                      ob={},
                      layout_mode='create',
                      formaction = "eligibility",
                      schoolresults = sr,
                      )

return context.eligibility_form(rendered = res,
                                 #psm = "%s <br /> %s" % (str(ds),str(lt.student_eligibility.getLayoutDefinition()))
                                 psm = psm,
                                 )
