On 9/25/07, Vanderson Mota dos Santos <[EMAIL PROTECTED]> wrote:
> Já gastei algum tempo procurando se o plone pode realizar buscas
utilizando
> comparação entre números inteiros e não encontrei nada ainda.

Para fazer uma busca dessas, você precisa antes de mais nada ter um índice
que seja um FieldIndex e que contenha valores inteiros (parece que o único
índice pré-configurado no portal_catalog do Plone 3 que contém inteiros é o
cmf_uid, que eu não sei para quê serve; alguém pode dizer?).

Digamos que você criou um archetype que tem um campo chamado tamanho, e que
então você tem no portal_catalog um índice com este nome.

Dados estes pré-requistos, você pode fazer a busca assim, a partir de um
script Python:

criterio = {'range':'min', 'query':5000}
return context.portal_catalog(tamanho=criterio)

Ou numa expressão python, dentro de um template (é feio fazer assim, na
minha opinião):

<div tal:define="res python:context.portal_catalog(tamanho={'range':'min',
'query':5000})">

O critério para fazer comparações em FieldIndex e DateIndex é sempre um
dicionário, com duas chaves:
 - range: valores válidos são as strings 'min', 'max' e 'minmax', que
definem a faixa de valores
 - query: um valor (no caso de 'min' ou 'max') ou uma tupla com dois valores
(no caso de 'minmax')

Exemplos:
# para selecionar objetos com tamanho >= 5000
res = context.portal_catalog(tamanho={'range':'min', 'query':5000}

# para selecionar objetos com tamanho <= 5000
res = context.portal_catalog(tamanho={'range':'max', 'query':5000}

# para selecionar objetos com tamanho >= 5000 and tamanho <= 6000
res = context.portal_catalog(tamanho={'range':'minmax', 'query':(5000,6000)}

Espero que tenha sido útil.


[ ]s
Luciano

Responder a