TurboGears no fim de semana

Há duas semanas, eu publiquei um texto chamado 'Django no fim de semana', relatando uma pequena experiência que fiz com o Django.

Na sexta-feira, o Torcato publicou um artigo chamado SQLALchemy no TurboGears. Resolvi tirar o sábado para testar o tutorial.

Usei o PostgreSQL no lugar do MySQL, o que me causou um pouco de dor de cabeça, não por causa do PostgreSQL em si, mas por causa do conector psycopg. Estou usando o Ubuntu Feisty Fawn, que vem com Python 2.5. Eu tinha instalada duas cersões do conector: psycopg e psycopg2. Ao iniciar o servidor do TurboGears com ambas as versões instaladas, ele morria no meio do caminho com core dump. Resolvi remove o psycopg2, e passou a iniciar. Mas não sem problemas: os SQL estavam sendo gerados de forma incorreta (mais especificamente, sem aspas nos campos string). Resolvi fazer o teste com o Python 2.4, reinstalei o psycopg2 e pra minha surpresa funcionou perfeitamente. Pelo visto, coisa está meio bichada na combinação python2.5 e psycopg2. Uma pena.

Se alguém resolver testar, eis o script de criação da tabela, versão PostgreSQL:

CREATE TABLE categories (

    id serial,
    name varchar(100)   NOT NULL DEFAULT '',
    PRIMARY KEY(id)
)

CREATE TABLE recipes ( id serial,
     category_id int NOT NULL,
     title varchar(100)   NOT NULL DEFAULT '',
     description varchar(255)   NULL,
     date  date NULL,
     instructions text  NULL,
     constraint fk_recipes_categories FOREIGN KEY (category_id) REFERENCES categories(id),
     PRIMARY KEY(id)
);
 

Alguns pontos:

  • O TurboGears provê uma ferramenta chamada toolbox, que inclui algumas coisas legais como um interpretador de python para a web (usando ajax), o Model Designer para criar os models e o CatWalk, para o CRUD dos modelos e o WidgetBrowser(mais sobre ele à seguir), entre outros. O Django inclui o admin no seu pacote contrib, porém o admin é voltado ao usuário, enquanto o CatWalk é voltado ao desenvolvedor. Porém, o CatWalk e o ModelDesigner ainda não funcionam com o SQLAlchemy. Um pequeno preço a pagar por sair do padrão :)
  • Gostei do sistema de templates Kid. Os zopistas vão se sentir familiares com ele, e suas construções py:content e py:replace. Você pode querer dar uma olhada no que eles tem em comum.
  • Como o tutorial do Torcato foi bem sucinto, resolvi brincar um pouco alêm dele. Baixei o tgcrud no http://www.turbogears.org/cogbin/ . Porém, me senti como se tivesse sido iludido por uma propaganda enganosa: ele não faz a introspecção para saber as colunas do seu objeto. Ele gera o esqueleto do CRUD, porém ele não sai funcionando antes de você dar uma modificada. Na verdade, a propaganda não foi enganosa: ela diz que é dessa forma que funciona. Apenas minha expectativas que eram muitas.
  • Achei o código dos controladores parecidos com os do rails. (Eu não cheguei a mexer muito com as views[controllers] do Django, então não posso dizer exatamente como foi essa parte).
  • Uma das idéias que eu achei interessante no desenvolvimento Plone+Archetypes são os widgets. Com widgets, você não precisa escrever o HTML para o seu formulário. Você pega o seu modelo, declara que o campo nome é do tipo TextWidget ou algo assim e o template já renderiza. Pode não ser a forma mais flexível de todas, mas é prático.
  • No geral, encontrei pouca documentação do TurboGears, e menos ainda sobre a combinação SQL+Alchemy e TurboGears. Para vocês terem idéia, a página que vem em primeiro lugar na busca do google é a própria página do Torcato. Tente você mesmo!
  • Eu não conseguiria fazer o deploy da aplicação com o TurboGears no meu site, devido à versão do meu apache e mod_python. Poderia tentar usando FastCGI e ver se eu não fico frustrado como esse cara.

Resumindo: foi um pouco mais difícil mexer com o TurboGears que com o Django, mas note-se que eu fui muito mais 'raso' no Django - não cheguei a escrever praticamente nenhum template, e os aplicativos em si eram diferentes. Achei pouca documentação do TurboGears. Dei uma olhada por alto no SQLAlchemy e fui com a cara do mesmo - dá pra usar DataMapper ou ActiveRecord com ele. Eu diria que no geral o TurboGears ficou com um pontinho a menos que o Django.

Endereço de trackback para este post

Trackback URL (clique direito e copie atalho/localização do link)

3 comentários


Notice: Undefined index: comment_secret in /home/walter/repositories/whissip-dev/blogs/inc/comments/model/_comment.class.php on line 161
  1. Israel Junior says :

    Bem legal seu blog. E legal que saber que tem gente que conhece Sergipe :)

    To te adicionando no meu blogroll beleza? A gente compartilha interesses em comum! Tambem curto desenvolver em PHP+MySQL e ando estudando python quando dá tempo.

    Um abraço.

  2. Como havia comentado contigo via gtalk, concordo que a documentação deixa a desejar. O que tenho a defender sobre isso é que muita mudança vem pela frente e seria cruel documentar tanto se iria servir por pouco tempo. A fontes de informação melhores são o Trac e o grupo do TurboGears no Google Groups.

    Eu estou saindo do padrão em TurboGears. Já estou querendo usar SQLAlchemy e também o Genshi no lugar do Kid e talvez por isso não possa mais usar o Widgets. Uma pena, pois fazer formulários com rapidez e com validação me livra de muita chateação no desenvolvimento de aplicações web.

    Já percebi que o Genshi é um sistema de templates mais fácil de debugar. Tanto que resolvi trocar o Kid porque este não me ajudou a detectar um erro.

    Espero que os problemas encontrados por ti seja corrijidos com a versão 1.1. Espero ainda escrever com clareza o motivo de usar o TurboGears, mas posso lhe dizer que estou de olho no Pylons que me parece bem organizado apesar de ainda pequeno. Na verdade é sua simplicidade que está me atraindo.

  3. Tiago Bastos Email says :

    Coisa que eu ainda não consegui foi colocar meus templates organizados em pastas como no Rails ou Django :\

Share Your Thoughts


Seu endereço de e-mail não será revelado nesse site.

Sua URL será exibida.
PobreExcelente
(Quebras de linha se tornam <br />)
(Nome, e-mail & website)
(Permitir que usuários o contatem através de um formulário eletrônico (seu e-mail não será exibido.))
Subscribe to comments by email

You can just use your OpenID to provide your name, e-mail and url.