22dez

Script Python acessando classes do Django

Posted by gustavohenrique as Django


Há uns dias atrás eu precisei criar um relatório com dados obtidos de um BD MySQL usado por um projeto em Django. Esse relatório deveria ser enviado no mesmo horário todos os dias. Sendo assim, criei um script em Python para executar essa tarefa e adicionei uma chamada à ele no Cron (agendador de tarefas do Linux).
A primeira idéia que eu tive foi usar código SQL para obter os dados. Mas aí veio o desânimo: Eu teria que digitar muito. Pensei que se usasse o ORM do Django, em poucas linhas eu conseguiria os dados que preciso. Foi então que decidi usar as classes do Django, montar a estrutura do relatório a partir de um template HTML e enviar por e-mail.
Read the rest of this entry »

19dez

Apresentando a ExtJS

Posted by gustavohenrique as extjs

layout usando componentes da ExtJS

layout usando componentes da ExtJS

ExtJS é uma biblioteca Javascript para criar aplicações ricas para internet (Rich Internet Application). Com ela é possível construir interfaces gráficas com aparência de uma aplicação para desktop. Suas principais características são:

  • Alta performance e possibilidade de customizar componentes
  • Bem desenhada, documentada e as classes dos componentes são
    extensíveis
  • Possui uma versão Open Source
  • Pode trabalhar em conjunto com outras bibliotecas como JQuery,
    Mootools, Protoype…
  • Fácil de usar
  • Integração entre cada um dos seus componentes

Read the rest of this entry »

17dez

Novidades no blog

Posted by gustavohenrique as Sem categoria

blog
Faz 1 ano desde que eu estava entediado numa tarde de domingo e
decidi criar um blog. A idéia inicial era apenas postar assuntos sobre
Django, o framework que comecei a estudar na época (e estudo até
hoje), e algumas coisas sobre Linux que geralmente esqueço após um
tempo sem mexer.
Nessa nova versão do blog, pretendo abranger mais conteúdo e postar
com mais regularidade (será promessa de fim de ano? rsrs). Meu
objetivo imediato é me aperfeiçoar em desenvolvimento ágil e para isso
conto sempre com a ajuda dos amigos do Dojo-Rio que dão um show em TDD
(desenvolvimento dirigido à testes) e como trabalhar em
duplas equipe.
Para começar, alterei o layout feioso que estava utilizando antes por
esse que provavelmente em pouco tempo vou estar achando feio também.
Pensei em construir o blog em Django mas resolvi apenas atualizar a
versão antiga. Ainda acho o Wordpress imbatível nesse segmento.
Espero que todos gostem e que consigam tirar proveito de algo.

24jul

Mais um site em Django: xsol.com.br

Posted by gustavohenrique as Curiosidades, Django

Faz algumas semanas que já se encontra no ar um novo site brasileiro desenvolvido em Django, da empresa Xsol Tecnologia em Documentos. Trata-se de um e-commerce cujo código está sendo modificado (alguns detalhes, por questões de segurança) para em breve ser disponibilizado como open source.
O tempo gasto para codificar o site levou aproximadamente 40 horas. Devo isso graças à dupla Django + JQuery que agiliza a vida de qualquer desenvolvedor.
Quem quiser conferir, acesse http://www.xsol.com.br.

Xsol Tecnologia em Documentos

Xsol Tecnologia em Documentos

Tela do jqDjangoGrid

Tela do jqDjangoGrid

jqDjangoGrid é um plugin para JQuery com uma aplicação plugável do Django para criar um datagrid.
Fácil de instalar e customizar, possui ordenação de resultados e pesquisa usando ajax.
Atualmente não suporta recurso de inserir ou alterar registros diretamente no datagrid, mas possui um método genérico para remoção de registros e outro que retorna a PK (Primary Key) do objeto selecionado.
Read the rest of this entry »

Páginas: 1 2

07jul

Integrando PagSeguro com Django

Posted by gustavohenrique as Django

Nesse artigo mostrarei de uma maneira rápida e resumida como integrar o meio de pagamento PagSeguro à uma loja virtual com carrinho próprio. O código é simples e pode ser adaptado para o uso com outros serviços de pagamento como por exemplo o Pagamento Digital.
Read the rest of this entry »

Você não quer que apareça na tela do admin as app auth e sites? Então vou mostrar como retirar de forma fácil e rápida.
O procedimento se resume em copiar e alterar o arquivo index.html localizado dentro do diretório de templates do admin do django (django/contrib/admin/templates/admin/) e inserir o código que impede que sejam exibidas as apps auth e sites.
Read the rest of this entry »

Essa é uma dica rápida para quem precisa colocar uma marcação (geralmente um asterisco) no label dos campos obrigatórios de um formulário.
Abaixo um exemplo de como inserir um * vermelho na frente do label:

# -*- coding: utf-8 -*-
 
# Importamos o metodo mark_safe que possibilita utilizar códigos html
from django.utils.safestring import mark_safe
 
# Vamos criar um ModelForm comum cujo campo <strong>nome</strong> é obrigatório. cpf e <strong>telefone</strong> não.
class Cliente(models.Model):
    nome = models.CharField('Nome', max_length=100)
    cpf = models.CharField('CPF', max_length=17, blank=True, null=True)
    telefone = models.CharField('Telefone', max_length=14, blank=True, null=True)
 
    def __unicode__(self):
        return self.nome
 
# Agora o ModelForm
class ClienteForm(ModelForm):
    class Meta:
        model = Cliente
 
    def __init__(self, *args, **kwargs):
        for campo in self.base_fields:
            if self.base_fields[campo].required:
                self.base_fields[campo].label = mark_safe('<span style="color:red;">*</span> %s' % self.base_fields[campo].label)
        super(ClienteForm, self).__init__(*args, **kwargs)

30abr

Formatando decimal para moeda brasileira

Posted by gustavohenrique as Django

O código abaixo mostra uma maneira simples de formatar números decimais (float) para a moeda brasileira: Real. É um exemplo simples que o método retorna uma string no formato R$ X.XXX,XX.

def moeda_brasileira(numero):
    """
    Retorna uma string no formato de moeda brasileira
    """
 
    try:
        contador = 0
        preco_str = ''
        num = numero.__str__()
        if '.' in num:
            preco, centavos = num.split('.')
        else:
            preco = num
            centavos = '00'
 
        tamanho = len(preco)
        while tamanho > 0:
            preco_str = preco_str + preco[tamanho-1]
            contador += 1
            if contador == 3 and tamanho > 1:
                    preco_str = preco_str + '.'
                    contador = 0
            tamanho -= 1
 
        tamanho = len(preco_str)
        str_preco = ''
        while tamanho > 0:
            str_preco = str_preco + preco_str[tamanho-1]
            tamanho -= 1
 
        return "R$ %s,%s" % (str_preco, centavos)
    except:
        return 'Erro. Nao foi possivel formatar.'
 
 
class Produto(models.Model):
    modelo = CharField(max_length=100)
    preco = DecimalField(max_digits=10,decimal_places=2)
 
    def __unicode__(self):
        return self.modelo
 
    def getPrecoFormatado(self):
        p = str(self.preco)
        if p != 'None':
            preco = moeda_brasileira(p)
            return preco
        else:
            return False
    getPrecoFormatado.short_description = 'Preço'

Exemplo de uso:

>>>produto = Produto.objects.get(id=1)
>>>produto.getPrecoFormatado()
'R$ 1.290,00'

30abr

Modelagem de Dados da Wikipedia

Posted by gustavohenrique as Curiosidades

Navegando por aí, encontrei algo que despertou minha curiosidade: uma figura que mostra a modelagem do banco de dados da wikipedia.

Enquanto preparo novos conteúdos sobre django, resolvi postar para tirar um pouco da teia de aranha que está por aqui.

Figura do modelo de dados da wikipedia

Figura do modelo de dados da wikipedia

Links Relacionados

http://www.develovers.net
http://upload.wikimedia.org/wikipedia/commons/4/41/Mediawiki-database-schema.png