Quarta-feira, 2 de Abril de 2008

Django e Python2.5 no dreamhost - Parte 2

dream-trading.co.mz/1xbet-promo-code-and-deposit-bonus Bom depois de Configurado o Python, como visto no post anterior é hora de colocar o django no ar. Ahh lembrando que o Django não é suportado oficialmente pela dreamhost por isso a instalação é um pouquinho...digamos...xarope ehhehe, mas é possivel sim!

Usei como base para esse post a instalação do Django que está no wiki do Dreamhost, mas tinha dado uns probleminhas e, garimpando aki e ali... cheguei no resultado que vou passar para voces!

Configurando o site no dreamhost


bom pra começar, crie um dominio no painel de controle da Dreamhost, no meu caso criei um subdominio, mas o processo é o mesmo!

Escolha “Manage Domains” e depois “Add New Domain / Sub-Domain”
Escolha oome para seu (sub)dominio, no meu caso coloquei django.mdpetry.net
Escolha “Extra web security” e “Fast CGI Support” e submeta o formulário


Depois crie uma base de dados e uma tabela para seu projeto (não vo ficar explicando isso, mas é bem fácil de fazer! :) )

Configurando o Django


Entre por ssh na sua conta, e no home seu usuário, crie uma pasta django e dentro dela a pasta django_projects, para adicionar os seus projetos.

dentro da pasta ~/django, baixe o source do django, através do svn utilizando o comando:
svn co http://code.djangoproject.com/svn/django/trunk/ django_src

Altere o seu .bash_profile, adicionando as linhas:
export PATH=$PATH:$HOME/django/django_src/django/bin
export PYTHONPATH=$PYTHONPATH:$HOME/django/django_src:$HOME/django/django_projects

e ative as mudanças digitando source ~/.bash_profile

agora entre no diretório django_projects e crie um novo projeto:
django-admin.py startproject myproject

Como de costume, ele criou uma série de arquivos, crie as pastas para os templates e para as imagens (geralmente eu as crio dentro da pasta do projeto, mas tanto faz onde elas serão criadas)
no meu caso criei a pasta templates e media.

á no arquivo settings.py e altere as configurações:

de banco de dados:

DATABASE_ENGINE = 'mysql' # 'postgresql', 'mysql', 'sqlite3' or 'ado_mssql'.
DATABASE_NAME = 'django_db' # Or path to database file if using sqlite3.
DATABASE_USER = 'usuario' # Not used with sqlite3.
DATABASE_PASSWORD = 'senha' # Not used with sqlite3.
DATABASE_HOST = 'djangomysql.mdpetry.net' # Set to empty string for localhost. Not used with sqlite3.


de internacionalização:
TIME_ZONE = 'America/Sao_Paulo'
LANGUAGE_CODE = 'pt-br'


de templates:
TEMPLATE_DIRS = (
# Put strings here, like "/home/html/django_templates".
# Always use forward slashes, even on Windows.
"/home/mdpetry/django/django_projects/myproject/templates"
)


mídia:

MEDIA_ROOT = '/home/mdpetry/django/django_projects/myproject/media'
MEDIA_URL = 'http://django.mdpetry.net/media/'
ADMIN_MEDIA_PREFIX = '/admin_media/'


insira a seguinte linha no .bash_profile
export DJANGO_SETTINGS_MODULE=myproject.settings e ative novamente o arquivo.

após isso, sincronize o BD e crie u musuário para acessar a area de adminsitração com as suas alterações na pasta do projeto, digite:
django-admin.py syncdb

instalando e configurando o FASTCGI e o mod_rewrite


vá até o subdominio criado e vaixe o script python

wget http://svn.saddi.com/py-lib/trunk/fcgi.py e altere as permissões do arquivo chmod 755 fcgi.py

crie o arquivo dispatch.fcgi
#!/home/mdpetry/opt/bin/python
import sys
sys.path += ['/home/mdpetry/django/django_src']
sys.path += ['/home/mdpetry/django/django_projects']
from fcgi import WSGIServer
from django.core.handlers.wsgi import WSGIHandler
import os
os.environ['DJANGO_SETTINGS_MODULE'] = 'myproject.settings'
WSGIServer(WSGIHandler()).run()


para o mod rewrite, crie o arquivo .htaccess:
RewriteEngine On
RewriteBase /
RewriteRule ^(media/.*)$ - [L]
RewriteRule ^(admin_media/.*)$ - [L]
RewriteRule ^(dispatch\.fcgi/.*)$ - [L]
RewriteRule ^(.*)$ dispatch.fcgi/$1 [L]


reinicia o python para validar as mudanças:
pkill python

Configurações finais


altere as os links dos arquivos de midia para o projeto do django:
ln -s $HOME/django/django_src/django/contrib/admin/media $HOME/django.mdpetry.net/admin_media

adicione no arquivos settings.py do seu projeto a app de adminsitração:

INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.admin',
)


e no arquivos urls.py, deconmente a linahs da adminsitração tbem:
(r'^admin/', include('django.contrib.admin.urls')),

reinicie o python e na pasta do projeto instale o proejto com o manage.py
pkill python
python manage.py syncdb


e... ta pronto! se voce acessar http://django.DEUDOMINIO.com/admin, deverá aparecer a tela de login da interface de adminsitração do django!

Terça-feira, 1 de Abril de 2008

Django e Python2.5 no dreamhost - Parte 1

https://dream-trading.co.mz/1xbet-promo-code-and-deposit-bonus Estava com alguns probleminhas para isntalar o Django no Dreamhost, no meu caso, o servidor, depois de um tempo tentando estabelecer conexão, aparecia aquela indesejavel tela de erro 500, foi ai que o Andrews me deu a idéia de isntalar o python2.5, e de primeira deu tudo certo!

bom os passos para instalar:

Baixe o arquivo com o source do python e coloque numa pasta, no meu caso coloquei na opt do meu home, e após isso descompacte o arquivo:

cd ~
mkdir opt
wget http://www.python.org/ftp/python/2.5.2/Python-2.5.2.tgz
tar xvzf Python-2.5.2.tgz


entre na pasta do source, e instale com os comandos abaixo:

./configure --prefix=$HOME/opt/ --enable-unicode=ucs4
make
make install


após instalado, altere o .bash_profile:

vim ~/.bash_profile

e insira a seguinte linha no arquivo:

export PATH=$HOME/opt/bin/:$PATH


execute o arquivo e verifique a versão do python instalada!

source .bash_profile
python --version


Ele irá retornar a versão correta do python no caso a 2.5.2

Feito isso, será necessário instalar o módulo de conexão com o mysql, e agora com o python 2.5 vai se beem + fácil! :)


wget http://internap.dl.sourceforge.net/sourceforge/mysql-python/MySQL-python-1.2.2.tar.gz
tar xvzf MySQL-python-1.2.2.tar.gz
cd MySQL-python-1.2.2
python setup.py install



Amanha (ou depois hehe), posto como está configurado o djando na minha conta!

Terça-feira, 25 de Março de 2008

Django (e vários outros projetos) estão aceitando estudantes para desenvolver aplicações no Google Summer of Code

1xbet código promocional Você é estudante e está interessado em desenvolver algumas melhorias ou funções novas para o framework Django? o Django é um dos projetos que o Google Summer of code está bancando!
Se voce se acha que tem conhecimento suficiente, submeta suas proposta! o prazo se encerra dia 31 de março, ou seja, não há muito tempo! Ah e como recompensa voce ganha 4.500 doletas e uma camiseta bonitona! :)

algumas idéias que o pessoal sugeriu estão em: http://code.djangoproject.com/wiki/SummerOfCode2008

e a lista de discussão: http://groups.google.com/group/django-gsoc

se houver interesse siga este guia e faça sua aplicação: http://groups.google.com/group/google-summer-of-code-announce/web/guide-to-the-gsoc-web-app-for-student-applicants

ahh o pssoal do Plone, Zope, Grok, TurboGears e vários outros também estão aceitando participantes! veja a lista completa em: http://code.google.com/soc/turbogears/about.html

Terça-feira, 29 de Janeiro de 2008

Desenvolvendo para internet

Achei num blog por ai, e como to meio sem inspiração vai isso mesmo!

Sexta-feira, 25 de Janeiro de 2008

Recorte de imagens usando Python/Django/PIL

respondendo um dúvida na lista django-brasil, resolvi colocar aqui também um exemplo de recorte de imagem através do django.

from django.utils.httpwrappers import HttpResponse
from PIL import Image

def image(request,arquivo,largura=100,altura=100):

im = Image.open(arquivo)
imre = im.transform((largura, altura), Image.AFFINE,(1,0,0,0,1,0))

response = HttpResponse(mimetype="image/png")
image.save(response, "PNG")
return response


:)

Quarta-feira, 23 de Janeiro de 2008

DjangoPeople

Nos últimos meses, muitos usuários aderiram ao Django e, consequentemente ao Python! isso é muito bom e fico muito feliz com isso! :). No entnado, são pouco os usuários que utilizam as listas de discussão, irc, ou coisas do tipo, simplesmente entram no site, baixam o framewor, lêem a documentação (que'é muito boa por sinal!) e começam a desenvolver!

Então o co-criador do Django, Simon Willison e Natalie Downe, criaram o site djangopeople.net com o objetivo de "dar uma chance" de mostrar ao o mundo quem são os usuários desse fantástico framework (pouquinho puxa-saco não? ehhe)

Então se voce desenvolve sites em django, visite o site, e coloque mostre-se!

Código de Barras em Python

Estou trabalhando na geração de boletos bancários utilizando PIL e ReportLab, fiz uma pesquisada por ai e não havia um código de barras utilizando o padrão que precisava que era o padrão 2 de 5 intercalado. Por isso estou postando o código aqui! :)

Para executar é necessário do modulo PIL instalado!

import Image
import ImageDraw

class CodeBarPil:
"""
Classe base para implementação do código de barras
"""

def __init__(self):
pass

def drawCodeBarInterleaved2of5(self, value, posX=0, posY=0, height = 50):
"""
Desenha codigo de barras padrão intercalado 2 de 5
"""
im = Image.new('RGB',(750,80),'white')
draw = ImageDraw.Draw(im)

pattern = ('00110', '10001', '01001', '11000', '00101',
'10100', '01100', '00011', '10010', '01010')

# value deve possuir comprimento par, acrescenta 'zero' caso impar
if (len(value) % 2) != 0:
value= '0' + value
# faz intercalação dos pares
l=''
for i in range(0,len(value),2):
p1=pattern[int(value[i])]
p2=pattern[int(value[i+1])]
for p in range(0,5):
l+=p1[:1] + p2[:1]
p1=p1[1:]
p2=p2[1:]
# gera espacos e barras
barra=True
b=''
for i in range(0,len(l)):
if l[i] == '0':
if barra:
b+='B'
barra=False
else:
b+='E'
barra=True
else:
if barra:
b+='BBB'
barra=False
else:
b+='EEE'
barra=True
# concatena inicio e fim
b='BEBE' + b + 'BBBEB'
for i in range(0,len(b)):
if b[i] == 'B':
draw.line((posX,posY,posX,posY + height),'black')
else:
draw.line((posX,posY,posX,posY + height),'white')
posX+=1
return imagem