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.
Removendo “auth” e “sites” do admin do Django
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.
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.















