Removendo “auth” e “sites” do admin do Django

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.

Colocando um asterisco (*) no label dos campos obrigatórios

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)

Formatando decimal para moeda brasileira

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'

Modelagem de Dados da Wikipedia

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

Tutorial sobre ITIL

INTRODUÇÃO

A ITIL – Information Technology Infrastructure Library – é um conjunto de boas práticas para o gerenciamento de serviços de que veio para ajudar a resolver os desafios da TI (Tecnologia da Informação) para o negócio:

  • Dependência da TI para o negócio
  • Redução de custos e riscos
  • Justificativa para o retorno do investimento (ROI)
  • Manter segurança sobre as informações
  • Reduzir as perdas com indisponibilidade do serviço

Com a adoção da ITIL, a TI deixa de ser um provedor de tecnologia e passa a ser um parceiro de negócios com foco no cliente. Algumas características da TI orientada ao cliente:

  • Todos sentem que trabalham para o cliente
  • Equipe competente, responsável e sempre se aperfeiçoando
  • Servir aos cliente em primeiro lugar
  • Equipe tem bom entendimento sobre o negócio do cliente e sabe o impacto que pode ocasionar com a indisponibilidade do serviço

Problema com cache do mod_wsgi

Certo dia terminei um projeto em Django e após vários testes finalmente foi ao ar. Feito isso, liguei para o cliente e marcamos uma reunião para o dia seguinte. Na reunião, conversa vai, conversa vem, o sistema é exibido, tudo funcionando, cliente feliz, eu feliz, tudo ótimo e maravilhoso. Eis então que o cliente sugere uma pequena alteração: Alterar uma mensagem emitida ao usuário. Tarefa simples, pensei. Vou abrir o arquivo e alterar uma string. Pronto! Nada complicado ou demorado que exija marcar uma nova reunião para apresentar essa mudança. Em casa eu atualizo o arquivo e fica tudo como está. Erro meu ter pensado assim. Após a modificação ter sido feita, o sistema não quis atualizar por nada. Apertei Crtl+F5, limpei o cache do navegador, testei em outros navegadores… e nada. Só podia ser cache no servidor de hospedagem. Então deletei todos os .pyc e mesmo assim não funcionou. A coisa era do mal mesmo.

Instalando a PIL na KingHost

Recentemente terminei um projeto e, após todos os testes, chegou a hora do deploy – a implementação no servidor de produção. Então, logo de primeira o site não rodou. Analisando as mensagens de debug percebi que a classe ImageField que eu estava usando necessita da PIL (Python Image Library) e o servidor de hospedagem (KingHost) não a possui. Após várias buscas sem sucesso no google, entrei no canal de IRC #python-br o qual consegui uma grande ajuda do amigo “nosklo” e resolvi compartilhar a dica para instalar a PIL no diretório do projeto feito em Django e hospedado na KingHost.

Primeiro é necessário que você tenha instalado na sua máquina de desenvolvimento a PIL, rodando em ambiente Linux.
O processo de instalação consiste em copiar o diretório PIL e o arquivo PIL.pth para dentro do diretório do projeto criado com o Django. Após copiar, remova todos os arquivos .pyc do diretório PIL, deixando apenas os arquivos .py e .so.

Ex.:

[gu@notebook]$ ls
minhapp __init__.py manage.py PIL PIL.pth settings.py templates urls.py

No meu notebook com Ubuntu instalado, o diretório PIL e o arquivo PIL.pth encontram-se em /usr/lib/python2.5/site-packages. No servidor da KingHost a versão do Python é a 2.4 porém assim mesmo funcionou.
Caso alguém não consiga, estou disponibilizando a versão que utilizo com sucesso aqui: www.gustavohenrique.net/files/pil.tar.gz

Configurando Apache para trabalhar com Django e PHP

Introdução

Como primeiro artigo do ano, vou mostrar de forma bem rápida como configurar o Apache no Linux para trabalhar com Django e com PHP ao mesmo tempo. Para tal, foi usada a instalação padrão do Apache2 com PHP5 do Ubuntu no servidor de desenvolvimento.
O mod_wsgi é um módulo para o Apache que permite executar aplicações web escritas em Python. Trata-se de uma alternativa ao mod_python e ao FastCGI.

Roteamento em Linux com 2 links de internet

Introdução

Como primeiro artigo sobre Linux, vou abordar um pouco sobre roteamento de pacotes usando iproute e iptables.
Imagine um cenário onde há um servidor que compartilha a internet para a rede interna, atuando como gateway, e por algum motivo foi contratado mais um link de internet. Ou então há 2 ou mais servidores proxy e se deseja definir para qual deles cada IP da rede interna deve seguir caminho. Outro cenário seria separar a parte de navegação dos demais serviços (msn, emule, e-mail…), cada uma usando um link diferente. Nesse artigo vou demonstrar que o Linux proporciona maneiras simples e eficientes de implementar esse tipo de roteamento. As distribuições utilizadas foram ubuntu server 5.04 e 5.10 e debian lenny.

Formulário de contato no Django usando captchasblow

Introdução

Nesse artigo vou demonstrar como criar um formulário de contato contendo um campo captcha para enviar e-mail no Django, muito comum em blogs.
Segundo consta na wikipedia, CAPTCHA é um acrônimo da expressão “Completely Automated Public Turing test to tell Computers and Humans Apart” (teste de Turing público completamente automatizado para diferenciar entre computadores e humanos): um teste de desafio cognitivo, utilizado como ferramenta anti-spam.
Captchasblow é uma aplicação desenvolvida por Brandon Low, plugável em qualquer projeto em Django, capaz de gerar um captcha. Vale lembrar que para conseguir gerar a imagem do captcha, faz-se necessário o uso da PIL, uma biblioteca em python para manipulação de imagens. Não irei abordar o processo de instação dessa biblioteca, uma vez que na maioria das distribuições Linux atuais é relativamente simples.

Powered by WordPress | Shop the Best Verizon Wireless Deals. | Thanks to Best CD Rates, Credit Cards and Credit card