martes, 26 de febrero de 2013

Scripts personalizados En Work Flows. Captura de eventos

0 comentarios
 
La plataforma CPS (Base de KMKey) nos permite crear scripts personalizados directamente des de ZMI (sin necesidad de compliar) asociados a una transción en los Work Flow

Por ejemplo, si queremos que en el momento de crear, editar o cerrar un proyecto se realice una acción determinada, como por ejemplo enviar un mail personalizado, podemos caputrar este evento y ejecutar código

Si por ejemplo queremos enviar un mail al crear un expediente, accedemos a portal_workflows --> kmkey_folder_wf --> scripts i crearmos un  nuevo script de python, con código parecido al especificado más abajo

para asociar entonces un script a una transición, editamos la transición en cuestión, y asignamos el script a uno de los dos events (after o before)

from Products.KMKeyCore.pattern import KMObjectCreationAdapter
from Products.KMKeyDefault.smssenderfactory import SMSSenderFactory
from DateTime.DateTime import DateTime
import re
from AccessControl import getSecurityManager
from Products.KMKeyCore.pattern import KMObjectCreationAdapter
from Products.CMFCore.utils import getToolByName
from DateTime.DateTime import DateTime
from urllib import unquote
catalog = context.portal_catalog

proxy=context=cdm=state_change.object

if not proxy.portal_type=='kmkey_incidencia-ticket':
   return

content=proxy.getContent()
cdm = content.getDataModel(proxy)
crear=True

if not cdm['end_date']:
    return

if crear:
    if 1==1:
        creador = cdm['creador']
        email_to=''
        valor=''
        if creador:     
           brains = catalog(getDocid=creador)
           if not len(brains):
               brains = catalog(username=creador)
           if len(brains):
              email_to = brains[0].email
              valor = brains[0].Title

        if not email_to:
            subject='Creador sin email asociado'
            body = "xxxxxxxxx"
        else:
            reference=cdm['reference']
            utool = context.portal_url
            url_asistencia =  context.REQUEST['BASE0'] + '/kmkey/' + utool.getRelativeContentURL(proxy)
           
            subject='Asistencia finalizada - %s '%reference

            body="""
            proxy.createEmail(subject=subject,body=body,email_to = email_to)
Leer más...