Erro ao configurar MySql para Python com MySQLdb no MAC OS X

Depois de seguir as intruções de instalação no tutorial seguinte:
http://blog.imotion-info.com/2011/10/configurando-o-mysql-para-python-com-mysqldb-on-mac-os-x/

Ao rodar o projeto me deparei com o seguinte erro:

Erro ao carregar o módulo MySQLdb : Library not loaded: libmysqlclient.18.dylib

Pesquisei um pouco e encontrei a seguinte solução:
Antes de iniciar o projeto, apenas executei o seguinte trecho de código no terminal:

export DYLD_LIBRARY_PATH=/usr/local/mysql/lib/

e pronto, conexão com o banco de dados MySQL funcionando.

Solução encontrada em: http://www.blog.bridgeutopiaweb.com/post/how-to-fix-mysql-load-issues-on-mac-os-x/


			

Modeltranslation – Tradução dinâmica em sites Django

O pacote ‘modeltranslation’ do django pode ser utilizado para traduzirmos dinâmicamente o conteúdo de um model específico.

Este é por hora o mais interessante que já instalei.

Por que?

  • Para usar o mesmo, não é necessário mudar nada na estrutura dos models de suas apps.
  • É fácil administrar, pois o mesmo cria abas com as línguas para cada campo.
  • Você pode definir exatamente os campos e apps que deseja ter em vários idiomas.
  • É um projeto BSD ativo em: http://code.google.com/p/django-modeltranslation/, sempre melhorando.
  • Sua configuração é bem simples.

Bom, vamos ao que interessa.

Primeiro vejamos o resultado na imagem abaixo, que é para logo sabermos oque estaremos instalando e quem não gostar que faça seus comentários com outras soluções :d

Então? Note as abas, nesse exemplo há uma aba para a linguagem ‘pt-br’ e outra para ‘es’, português e espanhol. Na imagem deixei uma aba ‘es’ ativa apenas para ilustrar que você consegue editar da maneira desejada.
Note também que no topo da imagem, deixei a seleção de idiomas expandida apenas para mostrar que aquilo é um atalho, simplesmente para ativas todas as abas da página no idioma desejado.

 

Bom, se você achou interessante e quer usar em seus novos projetos segue um passo a passo de como eu consegui instalar :d usando o tutorial original como base http://code.google.com/p/django-modeltranslation/wiki/InstallationAndUsage.

 

Primeiramente, veja a seguir as etapas a serem seguidas. Fique tranquilo, cada etapa será explicada e exemplificada abaixo.

  1. Adicionar o modeltranslation em INSTALLED_APPS no arquivo settings.py de seu projeto.
  2. Configurar os idiomas que você deseja que o seu projeto tenha.
  3. Criar e setar a variável MODELTRANSLATION_TRANSLATION_REGISTRY no arquivo settings.py
  4. Criar um arquivo chamado ‘translation.py’ na pasta raiz de seu projeto. (Inverti a etapa 3 e 4 para entender de onde vem o nome do arquivo e que se desejarmos ter um nome diferente não tem problema, porém tem q ter esse cuidado.)
  5. Registrar os campos que devem ser traduzidos, executar o comando manage.py syncdb e sair para o abraço :d.
Etapa 1: No arquigo settings.py edite ou crie a variável: INSTALLED_APPS para que fique assim:
INSTALLED_APPS = (
    ...
    'modeltranslation',
    ....
)

Etapa 2: Ainda no arquivo settings.py devemos setar os idiomas que você deseja em que seu site trabalhe.
Organize os idiomas de acordo com a prioridade. Ou seja, o primeiro será o padrão do sistema. (Obviamente o idioma padrão poderá ser definido em outra variável se necessário)

gettext = lambda s: s
LANGUAGES = (
    ('pt-br', gettext(u'Português')),
    ('en', gettext('Inglês')),
    ('es', gettext('Espanhol')),
)

Obs: Por estarmos utilizando acentuação dentro deste arquivo de configuração (‘Português’) precisamos informar ao python que nosso código tem que entender acentuação. Por isso adicione no topo do arquivo, o seguinte:

#!/usr/bin/env python
#-*- coding:utf-8 -*-

Etapa 3: No arquivo settings.py devemos incluir a seguinte variável, inserindo o nome do seu projeto e o nome do arquivo que registrará as traduções (Para manter um certo padrão, vamos utilizar o nome do arquivo de registro como ‘tranlation.py’):

MODELTRANSLATION_TRANSLATION_REGISTRY = "nome_do_seu_projeto.translation"

Etapa 4: Agora que já registramos podemos criar o arquivo ‘tranlation.py’ na raiz do projeto com o seguinte código dentro dele:

#!/usr/bin/env python
#-*- coding:utf-8 -*-
from modeltranslation.translator import translator, TranslationOptions

Pronto, seu projeto já possui todas as configurações necessárias e já está funcionando.

Ta! Mas não tem nada traduzido ainda? Não! Vamos para a etapa final.

Etapa 5:

Nesta etapa, devemos registrar naquele arquivo ‘translation.py’ os campos que desejamos traduzir. Confira o exemplo a seguir, digamos que temos uma app de notícias e nela há uma classe Noticia:

class Noticia(models.Model):
    titulo = models.CharField(max_length=255)
    texto = models.TextField()

Então vamos definir que queremos ter os campos titulo e texto em vários idiomas.

Para isso devemos editarmos o arquivo translation.py para que fique dessa forma:

#!/usr/bin/env python
#-*- coding:utf-8 -*-
from modeltranslation.translator import translator, TranslationOptions
from noticias.models import Noticia
class NoticiaTranslationOptions(TranslationOptions):
    fields = ('titulo', 'texto',)

translator.register(Noticia,NoticiaTranslationOptions)

E também devemos editar o arquivo ‘admin.py’ da app noticias para que fique assim:

 

#!/usr/bin/env python
#-*- coding:utf-8 -*-
from django.contrib import admin
from modeltranslation.admin import TranslationAdmin
from noticias.models import Noticia
class NoticiaAdmin(TranslationAdmin):
    list_display = ('titulo',)

    class Media:
    js = (
            '/static/modeltranslation/js/force_jquery.js',
            'http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.2/jquery-ui.min.js',
            '/static/modeltranslation/js/tabbed_translation_fields.js',
        )
        css = {
            'screen': ('/static/modeltranslation/css/tabbed_translation_fields.css',),
        }
admin.site.register(Noticia,NoticiaAdmin)

Obs: Não esqueça de colocar a pasta modeltranlation com os arquivos estáticos (JS e CSS) dentro da pasta ‘static’ de seu projeto.

Feito isso basta você executar o comando:

python manage.py syncdb

Pronto, acesse o painel adminsitrativo de seu site e crie uma ‘notícia’ e veja o resultado.

Espero que isso posssa ajudar alguém como me ajudou. É um exemplo simples, porém já irá ajudar a iniciar a brincar com as traduções. Há também a possibilidade de traduzir campos em Inlines no admin, veja exemplos  no repositório oficial. E se necessário me peçam que disponibilizo este exemplo também.

Recomendo sempre utilizar a versão mais recente do projeto em: http://code.google.com/p/djangomodeltranslation/downloads/list

 

Instalando python PIL no MAC OS, xcode4

Ao tentar instalar a biblioteca PIL utilizando o comando “pip install PIL” no Mac OS X 10.6.8 com xcode4

Acabei me deparando resumidamente com o seguinte erro:

lipo: can't open input file: /var/folders/Ws/WsjZVFHiEr8EutBX5hoEDk+++TI/
-Tmp-//ccYxcTgw.out (No such file or directory)
error: command 'gcc-4.2' failed with exit status 1

Para resolver este problema basta executar o seguinte código:

sudo -s
export ARCHFLAGS="-arch i386 -arch x86_64"
pip install PIL


Encontrei esta solução em: http://arthurnn.com/blog/2011/07/05/installing-python-pil-in-mac-os-having-xcode4/

Django/Python – ORM

Objetivo:

Explicar o que o framework Django/Python oferece para a criação de projetos que necessitem de Integração de Banco de Dados, efetuando todo o CRUD automaticamente. Contextualizando com teorias de Sistemas Distribuídos.

Definição de ORM

  • Mapeamento Objeto-Relacional
  • Consiste em uma abordagem que permite a construção de sistemas utilizando o paradigma da orientação a objetos com a persistência destes objetos em bancos de dados relacionais.
  • As tabelas do banco de dados são representadas através de classes e os registros de cada tabela são representados como instâncias das classes correspondentes.
  • Ex: Se temos uma classe chamada Professor, no banco de dados o tabela que armazenará todos os itens cadastrados do tipo Professor, será nomeada ‘professor’.

Definição Interface

  • Ponto em comum entre dois/mais sistemas, onde pode existir uma comunicação.
  • Conjunto bem definido de métodos públicos que podem ser acessados externamente.
  • Interagir com outro computador/equipamento através de uma interface.
  • Ex: Acesso de sites via a um navegador web com acesso a internet, podemos visualizar um site e interagir com ele. As informações contidas neste site e como o seu conteúdo é disposto defini uma interface para um usuário obter algum proveito, desde apenas visualizar informações à ativar ações no sistema.

Sendo apresentado à Python

  • Python é uma linguagem de programação de alto nível, interpretada, imperativa, orientada a objetos, de tipagem dinâmica e forte.
  • Utilização: Desde sistemas embarcados à grandes portais WEB.
  • Ex: Arduíno, sendo um ‘PIC’, programável em python. E até
  • sites como YouTube, Globo.com e Imotion-info.com. Bibliotecas gráficas etc.

Desbravando Django

  • Django é um framework web escrito em python.
  • Desenvolvido por uma equipe de jornalistas da Lawrence Journal Word.
  • Com o intuito inicial de ajudar na implementação de novas funcionalidades ou até mesmo na criação de novas aplicações. Django nasceu assim, num ambiente em que modificações da estrutura de web site eram quase constantes e com prazos estreitos para a entrega de uma solução.

Django e seu ORM

  • O framework Django nos oferece, assim como outros, tipos de campos que se usados devem seguir suas orientações.
  • E o que Django tem de especial nisso?
  • Seu ORM, criando todo o Banco de Dados automaticamente, em um BD relacional definido nas configurações do projeto. (SQLite, MySQL, PostgreeSQL ou Oracle).