lunes, 28 de diciembre de 2009

Configurar Seleccionable / Autocomplete de Grupos / Empresas o Contactos

0 comentarios
 
Para configurar un campo relación asociado a una selección de grupos o empresas (o contactos), realizamos los siguientes pasos:

Para configurar una lista seleccionable (un select box)

- Agregar un Widget al layout : "KMKey Relation Select Widget"

- en el campo AdvancedQuery Expression (TALES) , utilizamos una expresión python que utlizará AdvancedQuery para ejecutar la consulta. Un ejemplo de filtro típico es filtrar los grupos de determinada categoría :
python:Eq('meta_type', 'KM Group')&In('categories',['customer','provider','lo que sea'])

o contactos

python:Eq('meta_type', 'KM Contact')

- Value to Show (TALES from the brain) : Aquí ponemos la expresión que se encarga de mostrar el valor :
python:brain.Title

Ya tenemos configurado nuestro seleccionable de empresas (o contactos)

En el caso de que haya muchos registros , no es conveniente, por motivos de rendimiento y de usabilidad, utilizar un seleccionable. Para ello podemos utilizar un autocomplete , con el mismo control, de la siguiente manera :

Para configurar un autocomplete:

- Realizamos exactamente los mismos pasos que antes
- Creamos , dentro de zmi/portal_skins/custom/ un python script. Lo llamaremos , por ejemplo "autocomplete_for_arquitectos"
- Establecemos el campo "Parameter list" a "value"
- El código del script deberá ser más o menos como el siguiente :

from Products.AdvancedQuery import MatchGlob, Eq, Le, Ge, In, Between, Generic

REQUEST = context.REQUEST
value = "*" + unicode(value, 'utf-8').encode('iso-8859-15') + "*"
catalog = context.portal_catalog

query = MatchGlob('Title', value) & Eq('meta_type', 'KM Group') & In('categories', 'Arquitecto')
brains = catalog.evalAdvancedQuery(query, ('Title' , ) )
result = ['< id="%s">%s< / li >' % (b.getDocid, b.Title) for b in brains]
result = ' <> ' + chr(10).join(result) + '< / ul >'
result = unicode(result, 'iso-8859-15')

REQUEST.RESPONSE.setHeader('Content-Type', 'text/xml;;charset=%s' % 'utf-8')
return result

- Finalmente, otra vez en el widget, establecemos el campo "Server method for autocompletation" con el nombre del script que hemos configurado antes (autocomplete_for_arquitecto, en el ejemplo)

Una vez hecho esto, en la pantalla de alta o edición, podemos establecer el campo utilizando la técnica del auto completado, escribiremos parte del nombre de la empresa a buscar, y la lista mostrará los elementos que coincidan, debiendo seleccionar uno de ellos

En caso de no aparecer ningún valor, revisar el script o mirar el error_log para localizar posibles errores

en el directorio de skins de KMKeyDefault, ya tenemos varios scipts por defecto que filtran grupos o contactos :

- auto_complete_for_contacts
- auto_complete_for_customers
- auto_complete_for_providers
- auto_complete_for_groups
- auto_complete_for_users_or_groups

Lo mismo que hemos hecho para grupos lo podemos hacer también para usuarios u otros objetos, simplemente cambiando las condiciones del query


Leer más...
miércoles, 23 de diciembre de 2009

Configurar qué se muestra en el navtree (título de los expedientes)

0 comentarios
 
Para personalizar qué información se visualiza en el navtree, simplemente tenemos que configurar, en cada schema asociado a cada patrón, un campo llamado 'navtree_title'

- Entramos a ZMI/schemas/schema_en_cuestion
- Añadir un campo string llamado 'navtree_title'
- Escribir la expresión que necesitemos en el campo 'Write : expresion', al estilo :

python: object and "%s - %s - %s" % (object.reference, object.title, object.planned_start.strftime(...)) or ''

o más complejo :

python:object and "SM.%s.%s"%(relacionados and len(relacionados)>=1 and util.relatedObjectAttribute(relacionados[0],'reference') or 'Sin Relación',serie) + ' - ' + object.title

Importante : Si utilizamos la read expression, esto se calcula cada vez, afectando al rendimiento, por eso lo usamos en la write expression, que solo se calcula cada vez que se guarda el objecto. El problema de esto segundo, es que si hacemos el cambio a posteriori (con expedientes ya creados) , hay que ejecutar un commit de cada objeto para que se actualice todo correctamente
Esto también es importante si tenemos los schemas en postgresql, ya que las read expresions NO se graban en las tablas

para ejecutar el commit tenemos la solución fácil por un lado, si hay pocos expedientes, que es editarlo uno por uno y guardarlo desde la propia aplicación

si hay muchos expedientes, no queda más remedio que ejecutar un zopectl debug y escribir esto (o crear un archivo de texto y ejecutarlo via zopectl run)

site = app.mi_site_de_km
site._p_jar.cacheGC()
site._p_jar.sync()
from AccessControl.SecurityManagement import newSecurityManager
from Testing.makerequest import makerequest
user = site.acl_users.getUser('un_usuarioa_dmin').__of__(site.acl_users)
newSecurityManager({}, user)
app = makerequest(app)
site = app.mi_site_de_km
from Products.CPSCore.EventServiceTool import getPublicEventService
from Products.AdvancedQuery import Eq,In
cat = site.portal_catalog
km = site.workspaces.kmkey
site._p_jar.cacheGC()
site._p_jar.sync()
brains = cat.evalAdvancedQuery(Eq('portal_type',el_portal_type_que_sea))

obs=[]
i=0
for brain in brains:
i=i+1
obs.append(brain.getObject())
if i%25==0:
site._p_jar.cacheGC()
site._p_jar.sync()


i=0
for proxy in obs:
ob = proxy.getContent()
dm = ob.getDataModel()
dm._commit()
proxy.reindexObject()
evtool = getPublicEventService(proxy)
evtool.notifyEvent('modify_object', proxy, {})
i=i+1
if i%5==0:
get_transaction().commit()
km._p_jar.cacheGC()
km._p_jar.sync()
Leer más...
lunes, 14 de diciembre de 2009

Cómo seguir la evolución de KMKey ?

0 comentarios
 
Varias personas nos han manifestado su interés en seguir la evolución de KMKey, pero tienen dudas acerca de cómo hacerlo. Vamos a intentar aclararlo en esta entrada. Disponemos de 2 herramientas para la comunidad de KMKey en español:

1) El blog http://kmkey-es.blogspot.com en el que te encuentras. En él publicamos trucos de configuración, detalles técnicos del desarrollo, o no tan técnicos, instrucciones para la instalación, etc. Puedes hacerte seguidor del blog pulsando en el bóton "Seguir", pero necesitarás disponer de una cuenta google, yahoo o twitter para hacerte seguidor del mismo. En todo caso, te animamos que lo visites con cierta frecuencia y entres tus comentarios a nuestras entradas si lo crees oportuno

2) La lista de correo KMKey Spanish Es el método más dinámico y participativo, donde vamos explicando con más frecuencia los avances, e incluso debatimos funcionalidades a implementar. Una lista de correo es un sistema en el que la gente se suscribe con una cuenta de e-mail. Una vez suscrita, puede enviar e-mails a la lista escribiendo un mail con destinatario kmkey-spanish@lists.forge.osor.eu Asimismo, todas las personas suscritas reciben todos los emails que se envían a la lista. Es una buena forma de llegar rápidamente a todos los interesados en un tema, en este caso KMKey, y que lleva años usándose en el mundo del software libre (colaborativo por definición). Si a alguien le molesta recibir demasiados e-mails, puede elegir en las preferencias la opción "Digest", de forma que sólo recibiría un resumen periódico. Para suscribirte tienes que entrar tu e-mail y elegir un password, y recibirás un correo de confirmación con las instrucciones para finalizar la inscripción. Te esperamos !!
Leer más...
jueves, 3 de diciembre de 2009

Liberado KMKey 3 versión Makhno

0 comentarios
 
Nos complace anunciar la liberación de KMKey Makhno, incluido dentro de la plataforma OSOR. Se puede obtener más información del producto y como descargarlo en la página comunitaria

Para quien no lo conozca, KMKey (Knowledge Management Key) es un software libre, con licencia GPL v2, que implementa gestión de proyectos y de calidad en un entorno web. Se encuentra desarrollado en lenguaje Python sobre el servidor de aplicaciones Zope y el gestor de contenidos CPS, y su principal utilidad es ofrecer una plataforma que cruza la planificación de proyectos con la gestión de contenidos y un cuadro de mando, convirtiéndolo en un entorno colaborativo tremendamente útil para cualquier empresa de servicios. Como valor añadido, el producto tiene una larga trayectoria empresarial y se encuentra en producción en multitud de empresas y organizaciones reales

En esta nueva versión se ha mejorado considerablemente la usabilidad, el rendimiento, y las utilidades disponibles pera el administrador. También se ha añadido la exportación e importación de patrones de trabajo con el fin de fomentar el intercambio de los mismos entre usuarios, y se han añadido nuevas vistas en el cuadro de mando. Esperamos que todo ello os resulte de la máxima utilidad

Los funciones que has sido objeto de revisión son:

DEFINICIÓN : Mayores capacidades de diseño de formularios con los “sublayouts”, ayudas y cabeceras
EQUIPO : Mejoras en la presentación de los grupos y contacto rediseño de la pagina de gestión de permisos
GESTIÓN: Mejoras en el cierre de proyecto
PLANIFICACIÓN: Mejoras en la edición de la planificacion
CONTROL: Mejoras con nuevas funciones en la presentación del Esfuerzo, presentación en % y en Gantt, comparativa Previsto/Real
Leer más...

Quieres colaborar con KMKey ?

1 comentarios
 
Necesitamos colaboradores para mejorar, difundir y documentar KMKey. Si te apetece pasar a formar parte de la comunidad KMKey en español seguro que puedes aportar tu granito de arena. Los principales perfiles, aunque no los únicos, que necesitamos son:

1) Administradores avanzados que ayuden a documentar las muchísimas opciones de configuración del sistema

2) Release managers, o personas encargadas de preparar y difundir las liberaciones de KMKey que se van llevando a cabo

3) Programadores python con ganas de aprender zope y de añadir nuevas funcionalidades a KMKey. Tenemos una lista de ideas interminable, pero faltan manos para implementarlas todas

4) Empaquetadores Debian o RedHad. También necesitamos gente capaz de generar un paquete .deb o .rpm para que KMKey pueda ser incluido como paquete disponible en las principales distribuciones de GNU/Linux

Es una buena oportunidad para aprender a implantar KMKey's, aprender a programar en zope o simplemente colaborar a difundir software libre. Si estás interesado envíanos un correo a la lista de correo KMKey Spanish
Leer más...

Como instalarse KMKey Makhno

51 comentarios
 
En primer lugar, dejar claro que KMKey requiere un servidor web con Zope 2.9.4, python 2.4 y sistema operativo GNU/Linux, preferentemente Debian. Aunque algunas partes pueden llegar a funcionar sobre Windows, no se soporta este sistema operativo de momento

En las estaciones cliente, se soporta tanto Mozilla Firefox como IE >= 6, sobre cualquier sistema operativo.

Dicho esto, si alguien quiere instalarse KMKey en sus dependencias, tiene varias opciones:

1) Usar la máquina virtual de virtualbox con kmkey preconfigurado. Esta es la opción que tarda más en desacargar, pero la más rápida de poner en práctica, y la única si usais Windows. Se trata de un disco para virtualbox con una Debian Lenny + KMKey instalado, y un site preconfigurado para gestión de calidad (aunque puede configurarse para otros menesteres, claro). Sólo se necesita crear la máquina, adjuntar el disco, y acceder por http://ip.de.maquina a vuestro KMKey. El password de root de la máquina es "demokm", y el usuario administrador de KMKey se llama "adminkmkey" con clave "demokm". Podeis descargar la máquina desde megaupload http://www.megaupload.com/?d=EP9DOO7Y

2) Descargar los fuentes de Joinup , Necesitais tener Linux y Zope2.9.4 A partir de ahí, descomprimir los fuentes en el directorio Products de Zope, y seguir las instrucciones de KMKeyCore/doc/INSTALL. El site que se necesita también lo podeis descargar del mismo sitio, viene preconfigurado con patrones de gestión de calidad, su usuario administrador es "adminkmkey", y su clave "demokm"

3) Instalar subversion y acceder a descargar la última rama stable, ejecutando "svn co https://joinup.ec.europa.eu/svn/kmkey/bundles/kmkey-stable" Los requisitos son los mismos que en el punto 2

Espero que lo disfruteis


Notas sobre problemas de red en la máquina virtual

La máquina virtual puede presentar algunos problemas de red si la versión de VirtualBox es antigua y no soporta "Bridge" en el interfaz de red. Usad una versión de VirtualBox más moderna y configurad la interefaz de red de tipo "Bridge" para que funcione

También nos han notificado algun problema con el adaptador de red en Debian. Por lo visto al crear una máquina virtual nueva y adjuntar el disco, el MAC address de la targeta de red cambia, y eso a veces no le gusta a Debian que recuerda las MAC address a través de su sistema UDEV. La solución es sencilla, entrar en la máquina virtual y ejecutar

rm /etc/udev/rules.d/70-persistent-net.rules

Después de eso reiniciad la máquina virtual y ya aparecerá el interfaz eth0


Si tienes dudas o comentarios usa por favor la lista de correo KMKey Spanish Gracias
Leer más...