plonegovbr / brasil.gov.portal

Implementação em Plone do Portal Padrão da Identidade Digital de Governo
https://plone.org.br/gov/
35 stars 31 forks source link

CatalogError: The index chosen for sort_on (byline) is not capable of being used as a sort index. #191

Closed idgserpro closed 8 years ago

idgserpro commented 9 years ago

Quando adicionamos uma Coleção, selecionamos 'Tipo' no campo 'Termos de busca', deixamos o combo 'É' selecionando e marcamos 'Página' no terceiro combo, ocorre o erro abaixo na resposta do javascript:

Module ZPublisher.Publish, line 138, in publish
Module ZPublisher.mapply, line 77, in mapply
Module ZPublisher.Publish, line 48, in call_object
Module plone.app.querystring.querybuilder, line 58, in html_results
Module plone.app.querystring.querybuilder, line 49, in __call__
Module plone.app.querystring.querybuilder, line 116, in _makequery
Module Products.CMFPlone.CatalogTool, line 393, in searchResults
Module Products.ZCatalog.ZCatalog, line 604, in searchResults
Module Products.ZCatalog.Catalog, line 916, in searchResults
Module Products.ZCatalog.Catalog, line 894, in _getSortIndex

CatalogError: The index chosen for sort_on (byline) is not capable of being used as a sort index. 
hvelarde commented 9 years ago

eu acho que isso pode ser um erro do collective.nitf; por favor abrir no repo dele e criar um branch com um teste de RF demostrando o problema.

idgserpro commented 9 years ago

@hvelarde verifiquei melhor o problema e reportei aqui:

https://github.com/plone/plone.app.querystring/issues/37

De qualquer forma, o collective.nitf deveria ser corrigido também.

winstonf88 commented 9 years ago

Alguma conclusão sobre este assunto?

idgserpro commented 9 years ago

Existem duas soluções para esse problema:

  1. O plone.app.querystring não deve listar índices do tipo ZCTextIndex no campo 'Ordenar' da coleção. ver: https://github.com/plone/plone.app.querystring/issues/37
  2. O collective.nitf deve definir o registro plone.app.querystring.field.byline com:
<value key="sortable">False</value>

ver: https://github.com/collective/collective.nitf/issues/121

winstonf88 commented 9 years ago

Eu acho a primeira opção a mais correta. Se esse tipo de índice não pode ser usado nesse contexto então ele não deve ser listado e SE for necessário que esse índice seja listado então o tipo dele tbm deve ser mudado no collective.nitf.

idgserpro commented 9 years ago

@winstonf88 também acho que o correto é corrigir o plone.app.querystring. Eu não tenho contributor agreement então eu não posso corrigir isso lá. Você pode corrigir isso lá?

winstonf88 commented 9 years ago

Posso sim, já estou trabalhando nisso.

winstonf88 commented 9 years ago

@idgserpro depois de olhar melhor o problema, isso deve ser corrigido no collective.nitf mesmo. Na realidade não tem nada que o plone.app.querystring pode fazer, ele apenas RECEBE valores via request e executa uma consulta no catalog com os parâmetros recebidos, que no caso o problema é um sort_on='byline'. A minha opinião é que se existe um índice que não pode ser usado como sort_on, ele não deve nem ser listado, o problema é que isso vem do Collection.sortingField, o vocabulary que está sendo usado nesse campo deveria não trazer esta opção. Porém, olhando por outro lado, o registro do índice byline está dizendo que ele é sortable então isso tbm pode não ser entendido como um bug do vocabulary. Acho mais fácil/rápido alterar as configurações do índice.

winstonf88 commented 9 years ago

@idgserpro @hvelarde Nesse caso o certo seria só desabilitar o sortable, ou alterar o tipo do índice para funcionar com sort_on?

idgserpro commented 9 years ago

@winstonf88 eu ainda acho que o plone.app.querystring deveria ser corrigido. O método mapSortableIndexes define quais índices serão listados no campo 'Ordenar'. Minha ideia é testar nesse método se o indicie é do tipo ZCTextIndex e não retornar esse indicie se for.

hvelarde commented 9 years ago

na minha ideia o tipo de índice está certo: ZCTextIndex se usa para buscas de texto completo, ou seja, eu poderia procurar por Jorge e a busca retornar artigos escritos tanto pelo Jorge Bem, quanto pelo Seu Jorge...

idgserpro commented 9 years ago

Sim @hvelarde, o tipo de índice está correto. O que não está correto é o plone.app.querystring listá-lo no campo 'Ordenar' da Coleção.

winstonf88 commented 9 years ago

Já mandei a correção desse item no https://github.com/plone/plone.app.querystring/pull/43

idgserpro commented 9 years ago

Corrigido no plone.app.querystring: https://github.com/plone/plone.app.querystring/issues/37

Agora falta esperar um novo release para que possamos incorporá-lo ao IDG, para fecharmos esse relato. Obrigado @winstonf88 pela correção!

idgserpro commented 9 years ago

@hvelarde saiu um release do branch 1.3.x do plone.app.querystring com as correções do @winstonf88 mas não saiu uma release do branch 1.2.x, que é a utlizada no Plone 4.3. Será que podemos utilizar a versão 1.3 ou teremos que esperar um release da 1.2?

hvelarde commented 9 years ago

não podemos, não; estou solicitando um release agora no #plone-framework

hvelarde commented 9 years ago

feito! https://pypi.python.org/pypi/plone.app.querystring/1.2.8

idgserpro commented 9 years ago

@hvelarde maravilha! Agora temos que adicionar esse versão em portalpadrao.release. Obrigado!

winstonf88 commented 9 years ago

Podemos fechar?

idgserpro commented 9 years ago

@winstonf88 ainda temos que testar a versão 1.2.8 do plone.app.querystring com o IDG e atualizar o https://github.com/plonegovbr/portal.buildout/blob/master/buildout.d/versions.cfg

winstonf88 commented 8 years ago

@idgserpro o plone.app.querystring já está na versão 1.3.12, podemos usar esta versão?

hvelarde commented 8 years ago

@winstonf88 não pode, não; esse branch é para Plone 5.

winstonf88 commented 8 years ago

@idgserpro @hvelarde fiz testes com o plone.app.querystring 1.2.9 e está OK. Posso atualizar o https://github.com/plonegovbr/portal.buildout/blob/master/buildout.d/versions.cfg?

hvelarde commented 8 years ago

pode sim.