; @c@sHhZdkZdkZdklZdkZdklZdkl Z l Z l Z dk l Z dklZdklZlZlZlZdklZdklZd klZd klZlZlZlZd k l!Z!l Z l"Z"d k#l#Z#d k$l%Z%l&Z&gZ'ddZ(deefdYZ)ei*e)dS(N(sClassSecurityInfo(sbad_id(s call_objects missing_namesdont_publish_class(smapply(sGLOBALS(s getToolByNames UniqueObjectsSimpleItemWithPropertiess format_stx(s ManagePortal(sPageTemplateFile(sControllerState(sFormActionTypes FormActionKeys FormActionsFormActionContainer(sFormValidatorKeys FormValidatorsFormValidatorContainer(sValidationError(s ANY_CONTEXTs ANY_BUTTONscCst|||t|Z<ei&d?d@Z=dAZ>dBZ?dCZ@edDZAei$dEdFZBdGZCRS(Hs sportal_form_controllers2Manage form validation and post-validation actionssForm Controller ToolslabelsOverviewsactionsmanage_overviews Documentations manage_docss Validationsmanage_formValidatorsFormsActionssmanage_formActionsFormswwwis manage_mains index_htmlsdocs.stxsrcCst|_t|_dS(N(sFormActionContainersselfsactionssFormValidatorContainers validators(sself((sV/mnt/gmirror/ports/www/zope-cmfformcontroller/work/CMFFormController/FormController.pys__init__Gs sdocscCs |iSdS(s-Returns FormController docs formatted as HTMLN(sselfs_docs(sself((sV/mnt/gmirror/ports/www/zope-cmfformcontroller/work/CMFFormController/FormController.pysdocsMssmanage_afterAddcCsAt|di}|iidj|_ti|||dS(Ns portal_urls PloneSite( s getToolByNamesobjectsgetPortalObjectsportals __class__s__name__splonesSimpleItemWithPropertiessmanage_afterAddsselfs container(sselfsobjects containersportal((sV/mnt/gmirror/ports/www/zope-cmfformcontroller/work/CMFFormController/FormController.pysmanage_afterAddSscCs|i||SdS(sInvokes the default view.N(sselfs__call__sREQUESTsRESPONSE(sselfsREQUESTsRESPONSE((sV/mnt/gmirror/ports/www/zope-cmfformcontroller/work/CMFFormController/FormController.pysviewYscCs,|tj o|id|indS(sInvokes the default view.s%s/manage_mainN(sRESPONSEsNonesredirectsselfs absolute_url(sselfsREQUESTsRESPONSE((sV/mnt/gmirror/ports/www/zope-cmfformcontroller/work/CMFFormController/FormController.pys__call__^s cCst|di}| odSnt|}|o d|Sn|ioct|do&t|i dot|i i do&||i i i jo d|SqqndS( s"See if an id is valid CMF/Plone ids portal_urlsEmpty ids'%s' is not a valid idsportal_propertiesssite_propertiess invalid_idss'%s' is a reserved idN( s getToolByNamesselfsgetPortalObjectsportalsidsbad_idsssploneshasattrsportal_propertiesssite_propertiess invalid_ids(sselfsidsssportal((sV/mnt/gmirror/ports/www/zope-cmfformcontroller/work/CMFFormController/FormController.pys_checkIdds   9slistActionTypescCsKti}|ig}x$|D]}|iti|q#W|SdS(s(Return a list of available action types.N(sform_action_typesskeysssorts action_typessksappendsget(sselfskeyss action_typessk((sV/mnt/gmirror/ports/www/zope-cmfformcontroller/work/CMFFormController/FormController.pyslistActionTypesvs  cCstiSdS(N(sform_action_typesskeys(sself((sV/mnt/gmirror/ports/www/zope-cmfformcontroller/work/CMFFormController/FormController.pysvalidActionTypessslistContextTypescCst|d}|iSdS(s:Return list of possible types for template context objectss portal_typesN(s getToolByNamesselfs types_toolslistContentTypes(sselfs types_tool((sV/mnt/gmirror/ports/www/zope-cmfformcontroller/work/CMFFormController/FormController.pyslistContextTypessslistFormValidatorscKs|ii|SdS(syReturn a list of existing validators. Validators can be filtered by specifying required attributes via kwargsN(sselfs validatorss getFilteredskwargs(sselfsoverrideskwargs((sV/mnt/gmirror/ports/www/zope-cmfformcontroller/work/CMFFormController/FormController.pyslistFormValidatorssslistFormActionscKs|ii|SdS(ssReturn a list of existing actions. Actions can be filtered by specifying required attributes via kwargsN(sselfsactionss getFilteredskwargs(sselfsoverrideskwargs((sV/mnt/gmirror/ports/www/zope-cmfformcontroller/work/CMFFormController/FormController.pyslistFormActionsssmanage_editFormValidatorscCs1|i|i||ii|idSdS(s Process form validator edit forms/manage_formValidatorsFormN(sselfs_editFormValidatorss validatorssREQUESTsRESPONSEsredirects absolute_url(sselfsREQUEST((sV/mnt/gmirror/ports/www/zope-cmfformcontroller/work/CMFFormController/FormController.pysmanage_editFormValidatorsss_editFormValidatorsc Csx|iiD]} | ido| td}|iid|}|iid|}|iid|}|i t |||||iid|}|iid|}|iid|} |iid|} |it||| | |qqWdS(Nsold_object_id_sold_context_type_s old_button_s object_id_s context_type_sbutton_s validators_(sREQUESTsformskeyssks startswithslensnsgets old_object_idsold_context_types old_buttons containersdeletesFormValidatorKeysselfs object_ids context_typesbuttons validatorsssets FormValidator( sselfs containersREQUESTs context_typesns old_buttons old_object_ids object_idsold_context_types validatorssbuttonsk((sV/mnt/gmirror/ports/www/zope-cmfformcontroller/work/CMFFormController/FormController.pys_editFormValidatorsssaddFormValidatorscCs&|iit|||||dS(N(sselfs validatorsssets FormValidators object_ids context_typesbutton(sselfs object_ids context_typesbuttons validators((sV/mnt/gmirror/ports/www/zope-cmfformcontroller/work/CMFFormController/FormController.pysaddFormValidatorsssmanage_addFormValidatorscCs1|i|i||ii|idSdS(sProcess form validator add forms/manage_formValidatorsFormN(sselfs_addFormValidatorss validatorssREQUESTsRESPONSEsredirects absolute_url(sselfsREQUEST((sV/mnt/gmirror/ports/www/zope-cmfformcontroller/work/CMFFormController/FormController.pysmanage_addFormValidatorsss_addFormValidatorscCsk|iid}|iid}|iid}|iid}|it |||||dS(Ns new_object_idsnew_context_types new_buttonsnew_validators( sREQUESTsformsgets object_ids context_typesbuttons validatorss containerssets FormValidatorsself(sselfs containersREQUESTs context_types object_ids validatorssbutton((sV/mnt/gmirror/ports/www/zope-cmfformcontroller/work/CMFFormController/FormController.pys_addFormValidatorss smanage_delFormValidatorscCs1|i|i||ii|idSdS(s"Process form validator delete forms/manage_formValidatorsFormN(sselfs_delFormValidatorss validatorssREQUESTsRESPONSEsredirects absolute_url(sselfsREQUEST((sV/mnt/gmirror/ports/www/zope-cmfformcontroller/work/CMFFormController/FormController.pysmanage_delFormValidatorsss_delFormValidatorscCsx|iiD]}|idor|td}|iid|}|iid|}|iid|}|i t ||||qqWdS(Nsdel_id_sold_object_id_sold_context_type_s old_button_(sREQUESTsformskeyssks startswithslensnsgets old_object_idsold_context_types old_buttons containersdeletesFormValidatorKeysself(sselfs containersREQUESTsns old_buttons old_object_idsold_context_typesk((sV/mnt/gmirror/ports/www/zope-cmfformcontroller/work/CMFFormController/FormController.pys_delFormValidatorsssmanage_editFormActionscCs1|i|i||ii|idSdS(sProcess form action edit forms/manage_formActionsFormN(sselfs_editFormActionssactionssREQUESTsRESPONSEsredirects absolute_url(sselfsREQUEST((sV/mnt/gmirror/ports/www/zope-cmfformcontroller/work/CMFFormController/FormController.pysmanage_editFormActionsss_editFormActionsc Csbx[|iiD]J} | ido4| td}|iid|}|iid|} |iid|} |iid|}|i t|| | |||iid|} |iid|}|iid|}|iid|} |iid |}|iid |}|it| ||| |||qqWdS( Nsold_object_id_s old_status_sold_context_type_s old_button_s object_id_sstatus_s context_type_sbutton_s action_type_s action_arg_(sREQUESTsformskeyssks startswithslensnsgets old_object_ids old_statussold_context_types old_buttons containersdeletes FormActionKeysselfs object_idsstatuss context_typesbuttons action_types action_argssets FormAction(sselfs containersREQUESTsstatuss action_types context_typesns old_buttons old_object_ids object_idsold_context_typesbuttons old_statussks action_arg((sV/mnt/gmirror/ports/www/zope-cmfformcontroller/work/CMFFormController/FormController.pys_editFormActionss s addFormActionc Cs,|iit|||||||dS(N( sselfsactionsssets FormActions object_idsstatuss context_typesbuttons action_types action_arg(sselfs object_idsstatuss context_typesbuttons action_types action_arg((sV/mnt/gmirror/ports/www/zope-cmfformcontroller/work/CMFFormController/FormController.pys addFormActionssmanage_addFormActioncCs1|i|i||ii|idSdS(sProcess form action add forms/manage_formActionsFormN(sselfs_addFormActionsactionssREQUESTsRESPONSEsredirects absolute_url(sselfsREQUEST((sV/mnt/gmirror/ports/www/zope-cmfformcontroller/work/CMFFormController/FormController.pysmanage_addFormActionss_addFormActionc Cs|iid}|iidi}|iidi}|iidi}|iidi}|iidi}|i t |||||||dS(Ns new_object_ids new_statussnew_context_types new_buttonsnew_action_typesnew_action_arg(sREQUESTsformsgets object_idsstripsstatuss context_typesbuttons action_types action_args containerssets FormActionsself( sselfs containersREQUESTsstatuss action_args context_types object_ids action_typesbutton((sV/mnt/gmirror/ports/www/zope-cmfformcontroller/work/CMFFormController/FormController.pys_addFormActionssmanage_delFormActionscCs1|i|i||ii|idSdS(sProcess form action delete forms/manage_formActionsFormN(sselfs_delFormActionssactionssREQUESTsRESPONSEsredirects absolute_url(sselfsREQUEST((sV/mnt/gmirror/ports/www/zope-cmfformcontroller/work/CMFFormController/FormController.pysmanage_delFormActions ss_delFormActionc Csx|iiD]}|ido|td}|iid|}|iid|}|iid|}|iid|}|i t|||||qqWdS(Nsdel_id_sold_object_id_s old_status_sold_context_type_s old_button_(sREQUESTsformskeyssks startswithslensnsgets old_object_ids old_statussold_context_types old_buttons containersdeletes FormActionKeysself( sselfs containersREQUESTsns old_buttons old_object_idsold_context_types old_statussk((sV/mnt/gmirror/ports/www/zope-cmfformcontroller/work/CMFFormController/FormController.pys_delFormActionsscCs|iit||SdS(N(sselfs validatorssmatchsids context_typesbutton(sselfs object_ids context_typesbutton((sV/mnt/gmirror/ports/www/zope-cmfformcontroller/work/CMFFormController/FormController.pys getValidatorsscCs|ii||||SdS(N(sselfsactionssmatchsidsstatuss context_typesbutton(sselfsidsstatuss context_typesbutton((sV/mnt/gmirror/ports/www/zope-cmfformcontroller/work/CMFFormController/FormController.pys getAction!scCsM|i}|iidt}|iidh}|ot|dtt jo t}n| oZ|tjot dh}n|i d|i t|i d|d|in7|tjo)tdd d d d d ddn|i|x-|iD]\}}|ii||qW|ii d||SdS(Nscontroller_statesform_envs __class__serrorsssuccesssidscontexts No controller state available. s7This commonly occurs when a ControllerValidator (.vpy) s6script is invoked via the validation mechanism in the s:portal_form tool. If you are using a package designed to s9be used with portal_form, you are probably inadvertently sRinvoking a validator designed for use with CMFFormController (e.g. validate_id). sTIf you are using a package designed to be used with CMFFormController, you probably s:have a "portal_form" in your URL that needs to be removed.(sobjsidsselfsREQUESTsgetsNonescontroller_statesenvsgetattrsControllerStates is_validators setStatuss setNextActionssets getParentNodes ValueErrors_setValidatingsitemssksvskwargss setdefault(sselfsobjs is_validatorscontroller_statesvsenvsksid((sV/mnt/gmirror/ports/www/zope-cmfformcontroller/work/CMFFormController/FormController.pysgetState%s&        )  c Cs|tjo|i}|}nXf}|tjo |}n;h}x$|iD]\} } | ||