Tratando data de RSS com Django templates

Posted June 19th, 2009 in Desenvolvimento by felipepavao

O sistema de templates do Django permite a criação de tags e filtros para que possamos formatar ou tratar o conteúdo em um template de acordo com nosso desejo. (Veja mais na documentação do Django). Devido a filosofia do framework, é muito fácil criar um novo filtro para um tratamento específico. E foi exatamente isso que precisamos fazer.

A tarefa consistia em fazer uma simples formatação de data. Esta data estava no formato GMT (Ex: Sun, 19 May 2002 15:21:36 GMT) e precisávamos recuperar apenas a hora e o minuto (Ex: 15h21). Aparentemente, seria fácil fazer a conversão, utilizando a função strptime da classe datetime. Esta função transforma uma string em data, através da equiparação do formato da data.

from datetime import *
rss_date = "Sun, 19 May 2002 15:21:36 GMT"
date_format = "%a, %d %b %Y %H:%M:%S %z"
new_date = datetime.strptime(rss_date, date_format)
 
##ERRO
##ValueError: 'z' is a bad directive in format '%a, %d %b %Y %H:%M:%S %z'

Como podemos ver no erro destacado, ao utilizarmos essa função, há um problema de reconhecimento do atributo %z, responsável pela representação do fuso horário, apesar de constar da documentação oficial. Verificamos o arquivo /usr/lib/python2.5/_strptime.py e identificamos que a classe não implementa este atributo. Após uma breve pesquisa no Google, identificamos que possivelmente  na versão 2.6  o parâmetro já esteja sendo suportado, mas ainda não fomos a fundo nessa questão. E como precisamos usar Python 2.5, resolvemos partir para uma nova e simples solução, que era apenas parsear a string pela posição dos caracteres.

@register.filter
def rss_date(value):
    return value[17:19] + "H|" + value[20:22]

O código acima registra um filtro para ser usado no template HTML. Não achamos que essa seja a solução ideal, mas devido ao problema de versão optamos por utilizá-la. Veja a seguir como utilizar no template.

{{item.date | rss_date}}

Customizando uma página do WordPress

Posted March 1st, 2009 in Desenvolvimento by felipepavao

O WordPress é um bom sistema de blogs e todo mundo já sabe. Mas ele também pode ser considerado um bom CMS, se for usado da forma correta. A dica que vou passar serve para customizar páginas estáticas no WordPress.

Vamos imaginar a seguinte situação: temos uma página que é fora do padrão do nosso template, e queremos atribuir o conteúdo dessa página a este layout diferenciado. Para obter isso, utilizando o sistema de templates do WordPress, precisamos criar uma página customizada.  Copiamos e colamos então o arquivo page.php, mas renomearemos para custom-page.php, por exemplo.

Agora, dentro do arquivo custom-page.php, temos que adicionar um comentário PHP, para que o WordPress o entenda que esta página é customizada.

/*
Template Name:  Custom Home Page
*/

Agora, para atribuir esse novo template do WordPress, é preciso criar uma página e direcioná-la para o modelo recém criado, como mostrado na imagem.

wordpress-custom-page

Agora é só publicar a página com o modelo que criamos. Não é fácil ?