miércoles, 10 de junio de 2009

Plantillas Generables asociadas a un patrón

0 comentarios
 
KMKey permite generar documentos de plantillas OO a partir de un expediente, tarea, etc

Una de las formas es vincular un documento generable a un patrón. Los pasos a seguir son los siguiente

- Crear una Plantilla Open Office y guardarla dentro de un expediente. Normalemente el expediente,tarea o documento deberá tener acceso de lectura para todo el mundo

- En el patrón que nos interese generar esta plantillas, en modificar, vermos el campo "Generable Objects" que nos permite indicar un xml con los objetos que podremos general , del estilo :


<document
default_title="Informe de visita a obra.doc"
formats="doc#@sxw#@pdf#@oo"
getDocid="1588407473"
default_format="doc"
view_class="Products.KMKeyDefault.reportsview.SpanishReportsView"
view_context="context"
/>


La entrada 'document' indica que el objeto generable será un documento, los parámetros :

- default_title --> título por defecto
- formats --> lista de formatos generables
- getDocid --> docid que hace referencia al documento plantillas que hemos colgado antes
- default_format
- view_class , por defecto siempre Products.KMKeyDefault.reportsview.SpanishReportsView, pero podemos especificar una view propia
- view_context, por defecto 'context' --> el contexto de trabajo

Por norma general, lo único que modificaresmos será el título,los formatos y el getDocid

una vez agregado este xml al patrón, si vamos a un expediente generado con este patrón, al añadir un documento, veremos que nos permite seleccionar la plantilla generable

Ejemplo de plantilla generable sobre un expediente :

Por ejemplo, generamos un nuevo documento de OO, lo titularemos "plantilla.sxw", y escribiremos directamente el siguiente contenido:

<define unit here['getParentProject']()/>
<define datos view.datosLegibles(unit)/>
<define dm datos['dm']/>
<define boa view.getProyectoRelacionado(dm['xxx'])/>

<content datos['Title']/>
<content datos['Description']/>

<content datos['campo_numerico']/>
o
<content dm['campo_numerico']/>


Guardamos la plantilla, la colgamos dentro del expediente de plantillas, y luego vamos al expediente des de el que queremos generala, la generamos i... voilà! tenemos los datos volcados del expediente (título y descripción) en un documento de word (o pdf, ya que podemos hacer cualquier conversión). Y lo mismo para excel

Las instrucciones son bastante intuitivas:

<define unit here['getParentProject']()/>
** declara una variable llamada 'unit' que apunta al expediente

<define datos view.datosLegibles(unit)/>
** view es el python asociado a la plantilla, y es donde estan todas las funciones accesibles que nos facilitan mucho la vida.
datosLegibles es una función que acepta un proxy, y nos devuelve un diccionario con todos los campos del objeto, formateados, en modo vista (generados a partir del Layout)

<define dm datos['dm']/>
** datos['dm'] contiene el apuntador al datamodel, por si nos interesa acceder a los datos tal cual, sin estar formateados

<define boa view.getProyectoRelacionado(dm['xxx'])/>
** Esta función , getProyectoRelacionado, nos devuelve los datos legibles del proyecto relacionado del campo 'xxxx' del expediente.

Para hacer el output del campo, utilizamos el tag 'content'

<content datos['campo_numerico']/> --> salida de un campo numérico, formateado
o
<content dm['campo_numerico']/> --> sin formatear, por si nos interesa hacer cálculos en un excel

En otra entrada del blog tenemos una referencia rápida de los tags disponibles :
http://kmkey-es.blogspot.com/2009/06/usando-openoffice-para-hacer-listados-i.html

En otra entrada publicaremos una referencia rapida de todas las funciones disponibles en el view, que de momento podéis consultar directamente en el .py ubicado en Products/KMKeyDefault/reportsview.py

Leave a Reply