Poxa, tão simples!! 
Valeu pela informação...
Pensava que o metodo getImage somente retornava a tag da imagem... não
sabia que era o objeto completo..

Mas agora já está funcionando legal!!

--
Alexandre Marinho
ITEC -AL

--- Em zope-pt@yahoogrupos.com.br, "Luciano Ramalho" <[EMAIL PROTECTED]>
escreveu
>
> 2008/5/21 Alexandre Marinho <[EMAIL PROTECTED]>:
> > Bom esse problema é cabuloso.
> > Recentemente fui informado que o uso do getObject em consultas ao
> > catálogo podem causar baixo desempenho no portal.
> > Infelizmente possuo uma série templates para notícias com getObject.
> > Estou tentando remove-los mas estou com uma dificuldade séria.
> > Como estou fazendo hoje:
> >
> > results = context.portal_catalog(path='noticias',portal_type='News
Item')
> > resultsComFoto = [i for i in results if i.getObject().getImage()]
> > resultsSemFoto = [i for i in results if not i.getObject().getImage()]
> >
> > Como podem ver necessito separar as noticias com foto das sem, só que
> > o script acima abusa do getObject, o que é muito ruim!!!
> >
> > A solução mais óbvia seria criar um novo índice no catalog certo?
> >
> > Bom eu fiz isso, adicionei um novo índice chamado getImage e também um
> > metadata getImage. Porém agora sempre que tento cadastrar uma nova
> > noticia com imagem acontece o erro:
> >
> > Can't pickle objects in acquisition wrappers.
> >
> > Se removo o índice e o metadata funciona normal. Já tentei fazer fazer
> > um rebild do catalog mas fica do mesmo jeito!
> > O que estou fazendo de errado???
> >
> > DETALHE: quando adiciono um indice chamado getImageCaption (legenda da
> > imagem) o processo de cadastro permanece normal, ou seja, o erro
> > aparentemente acontece somente com o campo imagem. Porque seria isso?
> > Não é possível fazer dessa forma com atributos do tipo ImageField??
> > Senão como poderia separar as noticias com imagem das sem imagem sem
> > utilizar o getObject??
> >
> > Bom, acho que já fiz perguntas demais. Espero que possam me ajudar.
> > Obrigado
> 
> A mensagem de erro já dá a dica: não é possível serializar objetos que
> participam do sistema de aquisição (tradução não literal da mensagem).
> Note que o método getImage retorna uma imagem, um objeto complexo com
> suporte à aquisição, porém você está usando o resultado com se fosse
> um simples booleano nas suas list comprehensions. Então o que você
> precisa é armazenar no catalog o booleano, e não a imagem inteira. Um
> jeito super fácil de fazer isso via ZMI seria criar um script Python
> na skin do seu portal com este código:
> 
> return bool(context.getImage())
> 
> Você poderia chamar este script de "tem_imagem" e criar um field index
> com o mesmo nome no seu catalog.
> 
> [ ]s
> Luciano
>


Responder a