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

--
Alexandre Marinho
ITEC - AL

Responder a