Configurar Seleccionable / Autocomplete de Grupos / Empresas o Contactos

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 = [‘%s‘ % (b.getDocid, b.Title) for b in brains]
result = ‘ ‘ + chr(10).join(result) + ‘‘
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


Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies.

ACEPTAR
Aviso de cookies

Somos agentes digitalizadores

Software ISO subvencionado hasta 10.000€

Abrir chat
Equipo QmKey
¿Desea una demo y una cotización sin compromiso?