##parameters=REQUEST=None
# $Id: create_jamb.py 173 2005-11-15 16:28:29Z joachim $
"""
Create an the Jamb-Record for a Student

"""

type_name = 'Jamb'
ti = context.portal_types[type_name]
pr = context.portal_registration
pm = context.portal_membership

REQUEST.set('type_name',type_name)

validate = REQUEST.has_key("cpsdocument_edit_button")

lt = context.portal_layouts

res,psm,ds = lt.renderLayout(layout_id= 'jambcreate',
                      schema_id= 'jamb',
                      context=context,
                      mapping=validate and REQUEST,
                      ob={},
                      layout_mode='create',
                      )
if psm == 'invalid':
    return context.create_jamb_form(rendered = res,
                                 psm = 'Please correct your errors',
                                 ds = ds,
                                 )
elif psm == '':
    return context.create_jamb_form(rendered = res,
                                 psm = psm,
                                 ds = ds,
                                 )
    
elif psm == 'valid':
    s_id = "s%s" % ds.get('reg_nr')
    skw = {'title': "%(firstname)s %(lastname)s" % ds}
    context.invokeFactory('Student',s_id) 
    student = getattr(context,s_id)    
    student.getContent().edit(mapping=skw)
    context.notifyCPSDocumentCreation(ob=student)
    jamb_id = 'JAMB'
    student.invokeFactory('Jamb',jamb_id) 
    jamb = getattr(student,jamb_id)    
    ds.set('title', "%(reg_nr)s (%(lastname)s)" % ds)
    jamb.getContent().edit(mapping=ds)
    context.notifyCPSDocumentCreation(ob=jamb)
    psm = 'Student created'
    noCPSMember = False
    try:
        #pr.addMember(s_id, 'UnSeT',roles=('Member','CPSMember','Student','Contributor'))
        pr.addMember(s_id, '123456',roles=('Member','CPSMember','Student','Contributor'))
    except:
        noCPSMember = True
    if noCPSMember:
        #pr.addMember(s_id, 'UnSeT',roles=('Member','Student','Contributor'))
        pr.addMember(s_id, '123456',roles=('Member','Student','Contributor'))
    student.manage_setLocalRoles(s_id, ['Owner'])
    jamb.manage_setLocalRoles(s_id, ['Owner'])
##    student.getContent().setOwnership(s_id)
##    jamb.getContent().setOwnership(s_id)
##    groups = context.portal_directories.groups
##    gm = list(groups.getEntry('Students')['members'])
##    gm.extend((s_id,))
##    groups.editEntry({'group': 'Students', 
##                      'members': gm})  
    return context.students_folder_view_manager(psm=psm)

