Plone, Archetypes e a misteriosa data que só funciona corretamente a partir do dia 13

Num portal plone que nossa equipe gerencia, surgiu uma pequena: a data das notícias estava aparecendo com o formato mes-dia-ano (mm-dd-yy), quando na verdade o desejado era o formato padrão usado no Brasil: dia/mês/ano (dd/mm/YYYY). Após seguir o how-to sobre configuração do formato de data no plone.org, aparentemente tudo estava funcionando bem, com uma exceção interessante: as datas inferiores ao dia 13 mostravam invertidas, por exemplo: 12/02/2008 estava sendo exibida como 02/12/2008.

Após alguns minutos pesquisando, me deparo com o seguinte trecho de código no meu template:

toLocalizedTime(here.getData_noticia().strftime(‘%d/%m/%Y’))
 

Logo de início, esse strftime não me cheirou bem. Mesmo eu não conhecendo a API, a premissa me parece simples: se tudo está encapsulado por toLocalizedTime, não preciso passar uma data já localizada.

Uma forma simples de ver o que está acontecendo, usando o zopectl debug (para os que não estão familiarizados, é semelhante ao debug do rails ou do pylons: você carrega um interpretador da linguagem junto com o ambiente da sua aplicação).

>>> data = DateTime(’12/02/2008′)
>>> data.day()
2
>>> data.day()
2
>>> data.month()
12
>>>
 

Após uma verificação em CMFPlone/i18nl10n.py, no método ulocalized_time eu vejo que minha suspeita está correta:

    # convert to DateTime instances. Either a date string or
    # a DateTime instance needs to be passed.
    try:
        time = DateTime(time)
    except:
        log(‘Failed to convert %s to a DateTime object’ % time,
            severity=logging.DEBUG)
        return None
 

Minhas suspeitas se confirmaram, e agora eu já sei como corrigir o problema. Com isso, meu template ficou apenas:

toLocalizedTime(here.getData_noticia())
 

Alguns links interessantes:

This entry was posted in Geek life, Python and tagged , , , . Bookmark the permalink.

5 Responses to Plone, Archetypes e a misteriosa data que só funciona corretamente a partir do dia 13

  1. hugo [Visitante] says:

    Opa,
    o começo do seu texto está um pouco confuso:
    mes-dia-ano (mm-yy-aa), quando na verdade o desejado era o formato padrão usado no Brasil: mês/dia/ano (mm/dd/YYYY).

    Mês dia ano não seria? mm-dd-yy ?

    E o formato padrão do Brasil não é: dia/mês/ano?

    até!

  2. Sabrina [Visitante] says:

    olha, so um toque pra vc. eu acessei seu link do feed da python brasil e fui direcinada pra uma pagina 403 nada amigavel, pra dizer o minimo:

    403 Forbidden
    Please stop referer spam.

  3. Eu fui fã de zope e plone durante 2 dias, foram as pequenas coisas da plataforma que me desanimaram.

    Continua postando sobre PZP e vamos ver até onde isso vai!

  4. Hugo, eu corrigi o texto! Obrigado pelo toque

    ———–

    Sabrina, vou verificar o que está acontecendo!

  5. Lauro César [Visitante] says:

    Aqui o texto permanece com os erros citados…

Deixe um Comentário

O seu endereço de email não será publicado Campos obrigatórios são marcados *

*

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>