## Script (Python) "application_edit"
##bind container=container
##bind context=context
##bind namespace=
##bind script=script
##bind subpath=traverse_subpath
##parameters=REQUEST, cpsdocument_edit_and_view_button=None, action=None, portal_status_message=''
##title=
# $Id: application_edit.py 7936 2012-03-21 13:59:20Z henrik $
"""
"""
wftool = context.portal_workflow
from urllib import urlencode
from Products.CPSDocument.utils import getFormUidUrlArg
import DateTime
current = DateTime.DateTime()
import logging
logger = logging.getLogger('Skins.application_edit')

psm = ""
args = {}

info = context.getApplicationInfo()

student = info['student']

if info is None:
    logger.info('Anonymous user tried to access %s' % REQUEST.get('URL0'))
    return REQUEST.RESPONSE.redirect("%s/srp_anonymous_view" % context.portal_url())

if info['app_doc'].app_email:   # customized for Uniben
    logger.info('%s proceeded to start clearance' % (info['id']))
    #personal_doc = student.personal.getContent()
    #try:
    #    wftool.doActionFor(student.personal,'open')
    #except:
    #    pass
    #personal_doc.edit(mapping = {'email' : info['app_doc'].app_email})
    #wftool.doActionFor(student.personal,'close') 
    action = "/start_clearance"
    base_url = student.absolute_url()
    url = base_url + action
    return REQUEST.RESPONSE.redirect(url)
elif not cpsdocument_edit_and_view_button:
    action = "/application_edit_form"
    base_url = student.absolute_url()
    #url = base_url + action
    if portal_status_message:
        args['portal_status_message'] = portal_status_message
        url = base_url + action + '?' + urlencode(args)
    else:
        url = base_url + action
    return REQUEST.RESPONSE.redirect(url)



app = info['app']
app_doc = info['app_doc']
state = info['review_state']

app_review_state = wftool.getInfoFor(app,'review_state',None)
if app_review_state != 'opened':
    wftool.doActionFor(app,'open')

is_valid, ds = app_doc.validate(request=REQUEST,
                                schema_id = 'student_application',
                                layout_id = 'student_application',
                                proxy=app,
                                use_session=False)


action = "/application_edit"
base_url = app.absolute_url()

if is_valid:
    args['portal_status_message'] = "You didn't upload all required data!"

else:
    args['portal_status_message'] = "Please correct your error!"

url = base_url + action + '?' + urlencode(args)


  
return REQUEST.RESPONSE.redirect(url)
