Thiagosm’s Weblog

December 21, 2008

PyBoletos

Filed under: python — thiagosm @ 8:10 am

 

picture-36picture-43picture-52picture-61

Pyboletos é um  projeto em python utilizando framework Pylons 0.9.7rc3 para geração de boletos bancários utilizando Python.

Versão: 0.1

Gerando boletos para: 

    Banco do Brasil

    Caixa Economica 

    Bradesco 

    Banco Real

 

Requer: 

 Python 2.5.x (Linguagem )

 Pylons 0.9.7 ( Framework) 

 Mako ( Template, já vem junto com o pylons 0.9.7rc1,rc2,rc3 ou superior ) 

 PIL ( Para gerar código de barra dos boletos, utilizando padrão 2 por 5 intercalado ) 

 

Download ? 

http://code.google.com/p/pyboletos/downloads

 

Em breve, uma nova versão com  geração de boletos para outros bancos.

November 24, 2008

Pycontrole 1.5

Filed under: python — thiagosm @ 3:37 pm

picture-42picture-51

picture-11picture-6picture-7picture-3picture-2

Pycontrole

Pycontrole é um sistema Open-Source feito em Python que permite o gerenciamento de clientes de um provedor. Através de uma interface amigável e simples, é possível controlar o acesso, limitar banda, gerar relatório de tráfego, obter informações de consumo de link e consumo dos clientes e outras opções a mais.

Alterações :

Framework deixou de ser turbogears 1.0.7 e passou a ser pylons 0.9.7.

Alguns recursos em Ajax utilizando jquery para consulta de disponibilidade de ip, tráfego e outros.

Melhoramento no SNMP, adicionado Ping e Traceroute ( mtr ).

Adicionada algumas validações em javascript e formencode.

Mais permissões para um maior controle

Configurações de como controlar a banda ( usando IMQ ou fwmark iptables mark ) via gráfico, ativar e desativar dhcp, utilizar ou não sudo, etc…

Softwares Utilizados :

Pylons 0.9.7 rc3 ( ou rc2 ) – Framework

SQLAlchemy 0.4.7p1 – ORM

Psycopg2 – Driver conexão PosgreSQL

ReportLab 2.2 – Gerar PDF

Pil (imaging 1.6) – PDF com imagens

Pisa 3.x – Ferramenta para gerar pdf (html to pdf )

Html5lib – Dependencia do Pisa

Python 2.5.x

Download ?

http://code.google.com/p/pycontrole/downloads/list

Install ?

http://code.google.com/p/pycontrole/wiki/InstallPycontrole15

Um pouco sobre a mudança.

Sempre procurando o framework ideal, resolvi utilizar pylons para criar minhas próximas aplicações. Nunca vi ou ouvi ninguem que utiliza ou utilizou pylons no meu estado, mas resolvi conhecer mais a fundo esse framework. Depois de googlear muito, vi muito sobre turbogears 2.0 e pylons, com isso resolvi utilizar pylons puro mesmo.

Acostumado na vida boa com turbogears, widgets, identity, mochikit, tgtools, catwalk, em pylons tive que criar o que eu precisava “no braço”. O sistema de autenticação foi a primeira coisa, no tg sempre usava o identity, no pylons ou crio um mecanismo de autenticação próprio ( usando sessoes ), ou utilizo repoze.who. Os templates também notei diferença em velocidade, mako é realmente mais veloz e simples de entender do que o kid, a parte de endereçamento de urls ( Routes ) é bem mais interessante do que ficar utilizando @expose no turbogears e instanciando objetos no controllers.py. A parte de validação sempre utilizava @validate do turbogears, no pylons foi no formencode direto.

Ajax estou utilizando jquery para ajaxiar as coisas, widgets fizeram falta no pylons, mas não é o fim do mundo.

Gosto muito do turbogears e ainda utilizo, mas as próximas aplicações eu vou dar uma credibilidade para o pylons.

Para quem ainda não utilizou pylons, recomendo experimentar.

Projeto de TCC – Sistemas de Informação – Unp – Universidade Potiguar – Thiago Montenegro / Andrielly Costa

September 30, 2008

Pycontrole

Filed under: python — thiagosm @ 4:57 am

   Pycontrole 

 

   Pycontrole é um sistema Open-Source feito em Python que permite o gerenciamento de clientes de um provedor. Através de uma interface amigável e simples, é possível controlar o acesso, limitar banda, gerar relatório de tráfego, obter informações de consumo de link e consumo dos clientes e outras opções a mais. 

   

 

 

 Softwares utilizados: 

  Iproute2 (  Tc + htb  ) 

  SQLAlchemy 0.4.7p1 ( ORM – Mapeador objeto relacional ) 

  TurboGears 1.0.7 ( Framework web python )

  PostgreSQL 8.1  ( Banco de dados ) 

  ReportLab e PIL ( Gerar relatórios ) 

  Kernel com Layer7 ( somente se for limitar p2p )

  Pmacct ( IP Account ) 

  SNMP + Cacti ( Geração de gráficos de consumo )  

 

  Download ? 

    http://code.google.com/p/pycontrole/downloads 

June 7, 2008

Código de barra em python para boleto bancário.

Filed under: python — thiagosm @ 6:02 am

A um tempo atrás, estava desenvolvendo um sistema para provedor à rádio e surgiu interesse de gerar boleto bancário para os clientes. A idéia era quando o cliente tivesse bloqueado, seria redirecionado para uma página de bloqueio e identificando-se por IP e CPF, disponibilizar impressão do boleto bancário para efetuar o pagamento.

Eu já tinha visto vários exemplos com java, php porém com python utilizando o padrão 2 por 5 intercalado eu não tinha achado. Como o sistema de provedor é feito em python com turbogears, o ideal era ser feito em python.

Vamos agora ao que interessa, mostrar a classe.

É necessário ter biblioteca PIL instalada para utilizarmos a Image e a ImageDraw

Simples classe que eu utilizo:

#!/usr/bin/env python
# encoding: utf-8

import Image
import ImageDraw

class codigodebarra:
    def __init__(self):
        pass

    def getcodbarra(self, valor, posX=0, posY=0, height = 50):

        # padrão 2 por 5 intercalado ( utilizado em boletos bancários )
        padrao = ('00110', '10001', '01001', '11000', '00101',
                  '10100', '01100', '00011', '10010', '01010')

        # criando imagem
        imagem = Image.new('RGB',(750,80),'white')
        draw = ImageDraw.Draw(imagem)

        # verificando se o conteudo para gerar barra é impar, se for,
        # adiciona 0 no inicial para fazer intercalação em seguida dos pares 

        if (len(valor) % 2) != 0:
            valor= '0' + valor

        # faz intercalação dos pares
        l=''
        for i in range(0,len(valor),2):
            p1=padrao[int(valor[i])]
            p2=padrao[int(valor[i+1])]
            for p in range(0,5):
                l+=p1[:1] + p2[:1]
                p1=p1[1:]
                p2=p2[1:]

        # gerando espaços e barras
        barra=True
        b=''

        # P = preto
        # B = banco

        for i in range(0,len(l)):
            if l[i] == '0':
                if barra:
                    b+='P'
                    barra=False
                else:
                    b+='B'
                    barra=True
            else:
                if barra:
                    b+='PPP'
                    barra=False
                else:
                    b+='BBB'
                    barra=True

        # concatena inicio e fim
        b='PBPB' + b + 'PPPBP'

        # P = preto
        # B = banco 

        # percorre toda a string b e onde for P pinta de preto, onde for B pinta de banco 

        for i in range(0,len(b)):
            if b[i] == 'P':
                draw.line((posX,posY,posX,posY + height),'black')
            else:
                draw.line((posX,posY,posX,posY + height),'white')
            posX+=1
        return imagem

if __name__ == '__main__':
    # criando instância do objeto codigodebarra
    barra = codigodebarra()

    # codigo de barra completo em dígitos
    codigo='23793391265970787924921001306006538680000010567'
    # formato que deseja salvar a imagem (PNG,GIF)
    tipo='GIF'

    # retornando uma imagem a partir do código de barra
    image = barra.getcodbarra(codigo)

    # salvando imagem do tipo informado na variavel tipo
    image.save('%s.%s'%(codigo,tipo), tipo)

Resultado do código :

May 22, 2008

pysquidadmin

Filed under: python — thiagosm @ 4:05 pm

Geralmente quando ia bloquear ou liberar algum site ou extensão, eu tinha que editar arquivo dar um reload no squid, etc…. Um dia, fiz um serviço pra um colégio e o técnico do colégio gostaria de uma forma mais facil de gerenciar os alunos e conteudo sem precisar ficar editando arquivos ou digitando comandos.

Foi ai que eu pensei em criar um sistema web pequeno em python pra realizar o gerenciamento do Squid . Através de uma interface fácil, pode ser cadastrado os sites que os usuários não podem acessar, as extensões bloqueadas e também cadastrar os usuários informando a permissão ( liberado geral, acesso restrito a alguns sites, só pode acessar determinados sites ) . Com os dados gravados no PostgreSQL , são gerados acls, http_access e arquivos de configuração para o squid, e com isso realizando o controle de acesso.

Eu ia utilizar ldap, já que o squid tem suporte muito bem e o ldap é um banco leve e rápido para consulta, mas como eu sempre utilizo postgresql, coloquei o squid pra rodar autenticando no postgresql e o sistema ficou utilizando o pgsql mesmo.

Técnologias utilizadas :

TurboGears

SQLObject

PostgreSQL

Squid

Linux

Create a free website or blog at WordPress.com.