##parameters=REQUEST
# $Id: start_clearance.py 5257 2010-07-08 04:51:54Z henrik $
"""
request Clearance
"""
import DateTime
current = DateTime.DateTime()
pr = context.portal_registration
import logging
logger = logging.getLogger('Skins.start_clearance')

#type_name = 'Student'
#ti = context.portal_types[type_name]
#request.set('type_name',type_name)
wf = context.portal_workflow
request=REQUEST
redirect = request.RESPONSE.redirect
validate = REQUEST.has_key("cpsdocument_create_button")
lt = context.portal_layouts
#pr = context.portal_registration

info = context.getClearanceInfo()
if info is None:
    member_id = str(context.portal_membership.getAuthenticatedMember())
    logger.info('%s tried to start clearance for %s' % (member_id,request.get('PATH_INFO').split('/')[-2]))
    return redirect("%s/srp_invalid_access" % context.portal_url())
app_doc = info['app_doc']
review_state = info['review_state']
#session = REQUEST.SESSION
res,psm,ds = lt.renderLayout('student_clearance',
                             'student_clearance',
                             context,
                             mapping=validate and REQUEST,
                             layout_mode='create',
                             ob={},
                             commit = False,
                             formaction = "start_clearance",
                             button = "Start",
                      )
if psm == '':
    return context.clearance_pin_form(rendered = res,
                                 psm = None,
                                 firstlayout = True,
                                 lastlayout = True,
                                 ds = ds,
                                 info = info,
                                 )
error = False

##if session.get("clicked",None):
##    psm = 'Please wait a moment until "Clearance started" turns green, then click on the green link!'
##    error = True
##    logger.info('"%s","repeatedly pressed the clearance button"' % (info['id']))

if review_state == "clearance_pin_entered":
    psm = "You have already entered a clearance pin!"
    error = True
    logger.info('%s tried to start clearance though already started' % (info['id']))
elif psm == 'invalid':
    psm = "Please correct your input!"
    error = True
    logger.info('%s entered wrong clearance pin' % (info['id']))
# elif False    #app_doc.passport is None:
#     #psm = "You must upload your passport picture before you can start the registration process!"
#     #error = True
#     logger.info('%s started clearance without passport picture' % (info['id']))
if error:
    return context.clearance_pin_form(rendered = res,
                                 psm = psm,
                                 firstlayout = True,
                                 lastlayout = True,
                                 ds = ds,
                                 info = info,
                                 )
#session.set("clicked","clicked")
pin = str(ds.get('clr_ac_pin'))
logger.info('%s started clearance with pin %s' % (info['id'],pin))
wf.doActionFor(info['student'],'enter_clearance_pin')
#wf.doActionFor(info['clear'],'open')
context.waeup_tool.changeWorkflowState(info['clear'], 'opened')
dc = {}
app_doc = info['app_doc']
#dc['lga'] = app_doc.get('jamb_state','no state') + ' / ' + app_doc.get('jamb_lga','no lga')
dc['clr_ac_pin'] = pin
dc['clr_ac_date'] = current
dc['entry_date'] = current

a_review_state = wf.getInfoFor(info['app'],'review_state',None)
if a_review_state != 'closed':
    wf.doActionFor(info['app'],'close')

info['clear_doc'].edit(mapping = dc)

if info['penalty']:
    logger.info('%s started late clearance' % (info['id']))

return redirect("%s/clearance_edit_form" % info['clear'].absolute_url())

