14/12/2009

2 dicas simples

1. Como pegar separadamente dia, mês e ano atuais ?

import datetime
agora = datetime.date.today()
mes_atual = agora.month
ano_atual = agora.year
dia_atual = agora.day

2. Como saber se foi digitado algo no raw_input ( entrada de dados via teclado ) ?

retorno = raw_input("Digite algo ( ou não ) e tecla <enter>:")
if bool(retorno):
    print "Digitou {0}".format(retorno)
else:
    print "Não digitou nada !"

Ocorre que tanto uma string vazia, uma lista vazia, um numero zerado , um None bem como um False são considerados FALSOS no python, sendo assim, transformando nada digitado em boolean retorna False. :-)

Você tem alguma dica interessante ? Comente…
Gostou ? vote neste post…

11/12/2009

Django – Traduzindo sua aplicação

Passos para adicionar tradução em seu projeto django:

0. Primeiro altere/crie seus templates com o textos traduzíveis sendo chamados via “trans” template tag
Ex.

<h1>{% trans "Cabeçalho da Página" %}</h1>

1. settings.py
1.1 Configurar “USE_I18N = True”
1.2 Configurar “LANGUAGE_CODE = ‘pt-br’”
1.3 Adicionar:
LANGUAGES = (
(‘pt’, unicode(‘Portugues’)),
(‘en’, unicode(‘English’)),
)
2. Criar pasta “locale” dentro da sua app
3. Arquivos de mensagens
3.1 Criar Traduções ( arquivos .po )

cd exemplo/app
django-admin.py makemessages -l en
django-admin.py makemessages -l pt
#ou troque os dois comandos acima por
#django-admin.py makemessages -a

3.2 Traduza as string necessárias dentro dos arquivos .po, colocando a tradução de cada item “msgid” em seu respectivo “msgstr”.
3.3 Depois de tudo traduzido, compile tudo:

cd exemplo/app
django-admin.py compilemessages

Se correu tudo bem, quando você for acessar o site vai ver ele em uma linguagem, e depois se trocar na variavel LANGUAGE_CODE, vai ver ele em outra lingua.

Agora, se você quer possibilitar a troca dinâmica de linguagem, pelo usuário, você tem que colocar algumas coisinhas a mais:
1. Adicionar ‘django.middleware.locale.LocaleMiddleware’ em MIDDLEWARE_CLASSES
2. Adicionar em urls.py a linha abaixo
(r’^i18n/’, include(‘django.conf.urls.i18n’)),
3. Adicionar a variavel “LANGUAGES” no retorno da view para o template. +- assim

def index(request):
    '''....'''
    return render_to_response('index.html',{'LANGUAGES':settings.LANGUAGES})

4. Criar um formulario parecido com este:

<form action="/i18n/setlang/" method="post">
	<input name="next" type="hidden" value="/" />
	<select name="language">
	{% for lang in LANGUAGES %}
		<option value="{{ lang.0 }}">{{ lang.1 }}</option>
	{% endfor %}
	</select>
	<input type="submit" value="Go" />
</form>

Bom, estou anexando um zip com o projetinho de teste que fiz, e acabei por citar alguns trechos aqui, para que vocês possam verificar com seus próprios dedos no teclado. hehehehe
Se alguem tiver alguma dica para este assunto, por favor, não deixe de comentar !

http://www.berlotto.blog.br/djangotraducao.zip

11/12/2009

Módulos python – alternativas

Quando hospedamos nosso site em uma empresa terceirizada, geralmente não temos muito acesso às configurações e possíveis instalações de programas, mesmo tento acesso SSH. Mas quando estamos trabalhando com o nosso Djando, e precisamos de um módulo X lá para nosso site, porém só temos nossa casa ($HOME) e alguns poucos comandos possiveis… como vamos instalar o tal módulo para que não precisemos ficar esperando um bom tempo pelo suporte ?

Assim, a maioria dos modulos python, tem um script chamado “setup.py”, com o qual agente geralmente instala executando o seguinte:

python setup.py install

Porem se fizer-mos isto no ambiente da hospedagem, obteremos um erro ( ou mais ) de retorno, dizendo ou que falta algo, ou que não tem permissão, etc e tal…

Então como saída podemos fazer o seguinte:

execute o mesmo script setup.py, porém com o parametro “build” no lugar de “install”, assim será gerada uma pasta chamada “dist” contendo o que precisamos para poder rodar nosso sistema.
Você pode criar uma pasta específica para modulos comuns e colocá-la no PYTHONPATH, por exemplo:

mkdir $HOME/python_modules
echo "export PYTHONPATH=$PYTHONPATH:$HOME/python_modules" > ~/.bash_profile
source ~./bash_profile

Agora basta você copiar o que foi gerado dentro da paste “dist/lib” do seu modulo necessário e copiá-lo diramente para $HOME/python_modules.
Ficando assim sua lib/modulo disponível para você, sem necessitar de atendimento e sem demora.

O mesmo pode ser feito, muitas vezes com os sistemas de djando encontrados por exemplo em code.google.com, procure por django e você verá a infinidade de coisas que encontra.

02/12/2009

Python on the cloud…

Tem gente que gosta de criar seu proprio cliente para um serviço na WEB…

Tem gente que gosta de integrar seu software com os serviços na WEB, tal como twitter, e etc…

Mas como se faz isto ? Com os módulos e apis que o pessoal desenvolve por ai, e claro, acessando os serviços que os proprios sites disponibilizam, como XML-RPC, webservices, etc… etc…

Abaixo seguem algumas APIs para python acessar alguns serviços da web facilmente. Não sei se são os melhores, nem sei se tem outros, nem se funcionam corretamente, achei-os com uma rápida pesquisada pelo amigoogle ! hehehe

Deixem seus comentários para me dizer se uma ou outra é melhor ou tem algum truque ou se tem outra opção. Ok !

Fecebook

http://wiki.developers.facebook.com/index.php/User:Python

http://code.google.com/p/pyfacebook/

MSN

http://msnp.sourceforge.net/

Picasa Web Albuns

http://www.programmableweb.com/api/google-picasa

http://code.google.com/intl/pt-BR/apis/picasaweb/docs/1.0/developers_guide_python.html

Delicious

http://pypi.python.org/pypi/delicious.py/0.2.3

Gmail

http://libgmail.sourceforge.net/

Encurtar URL

http://luishenrique.org/blog/posts/python-api-migre-me

Acessar RSS

http://developer.yahoo.com/python/python-rss.html

Blogs

http://code.google.com/p/python-blogger/

http://linil.wordpress.com/2008/01/19/python-wordpress-feedparser-planet/

http://www.blackbirdblog.it/progetti/wordpress-library