## Script (Python) "cpsdocument_edit" ##bind container=container ##bind context=context ##bind namespace= ##bind script=script ##bind subpath=traverse_subpath ##parameters=REQUEST, cluster=None, cpsdocument_edit_and_view_button=None, action=None ##title= ## # $Id: student_edit.py 486 2006-09-06 10:09:39Z joachim $ """ Called when a document form is posted. Validates data, then: - if there's no error, updates the object and redirects to it, - if there's an error, puts data in session and redirects to edit form. A form uid is propagated during the redirect to uniquely identify the form in the session. """ from urllib import urlencode from Products.CPSDocument.utils import getFormUidUrlArg # Until ajax posts directly to its own script... if 'ajax_edit' in REQUEST.form: return context.cpsdocument_edit_ajax(REQUEST, cluster=cluster) # Check flexible controls #context.editLayouts(REQUEST=REQUEST) # Validate the document and write it if it's valid # (We don't call getEditableContent here, validate does it when needed.) doc = context.getContent() if context.portal_type == "StudentApplication": student = context.aq_parent if context.portal_workflow.getInfoFor(student,'review_state',None) == "application_pin_entered": student.content_status_modify(workflow_action="apply_for_admission") is_valid, ds = doc.validate(request=REQUEST, proxy=context, layout_id = "student_application_fe", layout_mode = 'edit', use_session=True) action = '/application_form' if is_valid: comments = REQUEST.get('comments') context.cpsdocument_notify_modification(comments=comments) if cpsdocument_edit_and_view_button is not None: action = '' psm = 'You successfully uploaded your passport image.' args = {} action = "/view" else: psm = 'psm_content_error' args = getFormUidUrlArg(REQUEST) else: args = {} psm = "You successfully applied for admission." action = "/view" else: is_valid, ds = doc.validate(request=REQUEST, proxy=context, cluster=cluster, use_session=True) if action is None: ti = doc.getTypeInfo() action = ti.queryMethodID('edit', 'cpsdocument_edit_form') action = '/' + action if is_valid: comments = REQUEST.get('comments') context.cpsdocument_notify_modification(comments=comments) if cpsdocument_edit_and_view_button is not None: action = '' psm = 'psm_content_changed' args = {} else: psm = 'psm_content_error' args = getFormUidUrlArg(REQUEST) args['portal_status_message'] = psm url = context.absolute_url() + action + '?' + urlencode(args) REQUEST.RESPONSE.redirect(url)