October 23, 2009
Programação, Python
1 Comment
Para setar a linguagem padrão da sua aplicação utilizando o turbogears basta editar o arquivo development.ini e incluir a seguinte linha após [app:main]:
lang = pt_BR
Depois execute os seguintes comandos:
python setup.py extract_messages
python setup.py init_catalog -l pt_BR
python setup.py compile_catalog
O primeiro comando extrai todas as mensages que devem ser traduzidas (dos templates e dos códigos python). O segundo comando cria um arquivo de tradução para a linguagem pt_BR. Após esse passo, você deve editar o arquivo gerado para traduzir as mensagens. O terceiro comando compila as mensagens traduzidas.
Agora para formatar datas e números no formato da linguagem padrão (ou da linguagem selecionada pelo usuário) basta criar o arquivo lib/i18nHelpers.py:
import tg.i18n
import babel.numbers
import babel.dates
__all__ = ["format_currency", "format_datetime"]
def get_lang(lang):
if lang:
return lang
return tg.i18n.get_lang()[0]
def format_currency(number, currency = "", locale = None, *args, **kargs):
return babel.numbers.format_currency(number, currency, locale = get_lang(locale), *args, **kargs)
def format_datetime(datetime, *args, **kargs):
return babel.dates.format_datetime(datetime, locale = get_lang(locale), *args, **kargs)
E importar essas funções no arquivo lib/helpers.py.
No seu template basta fazer algo assim:
R$ ${h.format_currency(xyz.valor)}
Não mapei todas as funções que o Babel disponibiliza, mas basta fazer como foi feito com essas duas funções.
October 23, 2009
Programação, Python
1 Comment
Para se integrar o elixir no turbogears 2, basta editar o arquivo model/__init__.py do seu projeto para ficar desse jeito:
# -*- coding: utf-8 -*-
from zope.sqlalchemy import ZopeTransactionExtension
from sqlalchemy.orm import scoped_session, sessionmaker
from sqlalchemy.ext.declarative import declarative_base
import elixir
maker = sessionmaker(autoflush=True, autocommit=False,
extension=ZopeTransactionExtension())
DBSession = scoped_session(maker)
elixir.session = DBSession
elixir.options_defaults["shortnames"] = True
DeclarativeBase = declarative_base()
metadata = DeclarativeBase.metadata
elixir.metadata = metadata
def init_model(engine):
"""Call me before using any of the tables or classes in the model."""
DBSession.configure(bind=engine)
from xyz.model.auth import User, Group, Permission
from xyz.model.entidades import Xyz
elixir.setup_all()
E para declarar suas entidades, basta fazer do jeito do Elixir, estendendo a classe elixir.Entity.
Com essa integração conseguimos utilizar o padrão Active Record.
October 14, 2009
Programação, Python
1 Comment
Para instalar o setuptools no Python 2.6 no Windows baixe os seguintes arquivos:
- setuptools-0.6c9.tar.gz
- setuptools-0.6c9-py2.6.egg
Estes arquivos estão no site: http://pypi.python.org/pypi/setuptools.
Depois extraia o arquivo setuptools-0.6c9.tar.gz e execute o seguinte comando:
python ez_setup.py setuptools-0.6c9-py2.6.egg
O comando acima irá instalar o setuptools no diretório de instalação do python. Para executar o easy_install basta que no PATH do sistema esteja o diretório Scripts que está dentro da pasta de instalação do Python.