Plone: Ordenação natural de forma fácil

Para aqueles que quiserem ordenar uma lista com caracteres especiais (e.g. [‘a’, ‘b’, ‘c’, ‘d’, ‘Á’]) no plone há duas formas de fazer:

A forma simples mas passível de erros

Temos uma lista a = [‘a’, ‘c’, ‘b’, ‘d’, ‘Á’], a forma mais simples de ordená-la seria a.sort()

Ótimo, mas o método ordenará da seguinte forma: [‘a’, ‘b’, ‘c’, ‘d’, ‘Á’]. Liste nomes dessa forma e sua aplicação (quem sabe até seus parentes mais próximos) será elogiada de maneira bem agradável.

A forma boa (!!!)

Dia desses descobri um cara chamado plone_utils. Esse cara possui um método chamado .normalizeString() que nos retorna a string normalizada para formação de URLs (e.g. “Navegação” é convertida para “navegacao”) dado o parâmetro.

Num script python:

u = context.plone_utils
a = [‘a’, ‘c’, ‘b’, ‘d’, ‘Á’]
a.sort(key=u.normalizeString)

Quando chamamos o método .sort() com o parâmetro key, o método chamará u.normalizeString(item) onde item é cada item da lista.

Dessa forma, não temos mais o problema de ordenação errada por causa dos caracteres especiais.

Leave a Reply

Your email address will not be published. Required fields are marked *