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 >