Arquivo para junho, 2011

Extendendo User do Django

Posted in Django, Programação, Python, Tecnologia with tags , on 28 de junho de 2011 by fchevitarese

Opa!!!

Bom, resolvi criar o artigo ou post (sei lá) pois tenho acompanhado na lista diversas dúvidas à este respeito.
O cabra quer criar usuários utilizando o User que o próprio Django oferece, mas com alguns campos que são pertinentes a aplicação dele.

Na própria documentação do Django, tem uma explicação bacana de como se fazer:
http://docs.djangobrasil.org/topics/auth.html#armazenando-informa-es-adicionais-sobre-usu-rios

Outro artigo muito bom (inglês) é este aqui.
http://scottbarnham.com/blog/2008/08/21/extending-the-django-user-model-with-inheritance

Eu implementei utilizando o artigo acima, só que ele apresenta um “problema”. Não sei se realmente é um bug do Django ou o que pode ser.
O fato é que mesmo ao se extender o Users do Django, quando você cria o novo usuário, a senha não é encriptada.
Perguntei na lista e fui aconselhado a sobrescrever o método save do User.
Não achei que fosse a melhor solução, mas no fim das contas, foi o que tive que fazer.

Como eu só utilizava a rotina de adição de usuários através do admin, ficou muito fácil de sobrescrever o método.
Eu criei uma classe padrão para o Admin dos meus usuários e todas as outras classes referentes extendiam dela 😉

Ficou assim:

class defaultAdminModel(admin.ModelAdmin):
    def save_model(self, request, obj, form, change):
        obj.set_password(obj.password)
        obj.save()

As outras classes ficaram assim:

class AdminLocaisAtendimento(defaultAdminModel):

Enfim, é isto 😛

Abraços!

Django Admin – Filtro com ForeignKey

Posted in Django, Programação, Python, Tecnologia with tags , on 22 de junho de 2011 by fchevitarese

Opa!

Não sei se o título foi claro, mas vou explicar o “problema” que tive e colocar o link da solução que eu encontrei no fantástico DjangoSnippets ^^
2 models relacionados e eu precisava filtrar no admin por um campo do model “pai” que não seu id ou instância.
( Acho que é isto xD )
Vamos exemplificar com códigos para ficar mais explicado ^^.

Model A:


class modelA(models.Model):
    descricao = models.CharField(max_length = 30)
    versao_dados = models.IntegerField(unique = True)
    arquivo = models.FileField(upload_to='tempfolder')

class modelB(models.Model):
    papai = models.ForeignKey(modelA) #Papai! kkkkk
    codigo = models.IntegerField()
    descricao = models.CharField(max_length = 100)
    class Meta:
        unique_together = (('rol', 'codigo'),)

Como você pode ver, se eu tentar cadastrar um modelA com a mesma versão já existente, o Django não deixará porque ele é único 😉

Já no modelB é um pouco diferente. Estou utilizando o unique_together, onde ele verificará como um registro único a união de papai e código, ou seja, eu poderei ter vários códigos repetidos, desde que cada um pertença a um papai diferente! xD ( Eu me acho engraçado às vezes kkk )
Este é o comportamento que eu preciso na minha aplicação 😉

Já no admin, eu precisava de um list_filter para o modelB que pudesse me mostrar a lista de versões cadastradas no modelA, e filtrar os dados do modelB de acordo com o que eu selecionar.
Ah tá!! Mas o Django não faz isto 😦 –> (Damn it!)  Bom, pelo menos não achei nada parecido 🙂

Então achei um snippet que faz workar! ^^

Aqui está o link da criança!
http://djangosnippets.org/snippets/2194/

No meu caso, eu coloquei o código dentro de uma pasta chamada utils, onde eu coloco algumas coisas que são peculiares a cada app.

O modelA ficou do mesmo jeito, já o modelB ficou assim:


class modelB(models.Model):
    papai = models.ForeignKey(modelA) #Papai! kkkkk
    papai.fk_filterspec = {'fk_field': 'versao_dados', }
    codigo = models.IntegerField()
    descricao = models.CharField(max_length = 100)
    class Meta:
        unique_together = (('rol', 'codigo'),)

Lembrando que é necessário importar o primeiro trecho que no meu caso, eu coloquei dentro de um arquivo que chamei de filterSpects, dentro da pasta utils da minha app.
Então ficou assim:

 from app.utils.filterSpecs import FkFilterSpec
 FkFilterSpec.register_filterspec()

Já no admin, ficou assim:

 list_filter = ('papai__versao_dados',)

Enfim, ficou bão !  ^^

Espero que seja útil pra mais alguém!!!

Abraços.objects.all()

Setup inicial de um projeto com Django 1.3

Posted in Django, Programação, Python, Tecnologia with tags on 21 de junho de 2011 by fchevitarese

Opa!

Sei que não é novidade pra quem já mexe com Django, até mesmo porque já tem um tempinho que a versão 1.3 saiu do forno 😛

Outro dia é que senti realmente a necessidade de migrar meus projetos para a nova versão do Django, tendo em vista algumas melhorias que foram feitas no framework. Quanto digo algumas, digo algumas melhorias que me atendem!

Não me interpretem mal. Sei que foram feitas várias melhorias 😛

Mas então, não senti dificuldades, mas algumas coisas realmente estão diferentes. Então, segue um link bacana do blog do Allisson  Azevedo mostrando um setup inicial de um projeto com Django 1.3

http://allissonazevedo.com/2011/05/18/setup-inicial-de-um-projeto-django-1-3/

Espero que seja útil! ^^

 

Abraços!

Testando outro browser! ^^

Posted in Inutilidades, Sem categoria with tags on 21 de junho de 2011 by fchevitarese

Opa!

Bom, isto não é dica, não é tutorial, não é artigo… Não é nada 😛

Só resolvi falar que estou testando outro browser. Achei que tinha encontrado meu browser “preferido” e não encontrei 😛

Estava utilizando o Chrome e estava até satisfeito até então. Foi aí que entre alguns pontos, o desenvolvimento utilizando Flex me deixou meio desapontado com o Chrome.

Voltei ao Firefox, utilizando a versão 5.0 ^^

Até então beta e que funfava beleza! Mas de alguns dias pra cá, ele ficou muuuuuuuuito lento novamente.
Não dava pra faze tudo junto… Minhas abas de navegação, minhas abas de desenvolvimento com Firebug, FlashBug etc …

Então, resolvi testar o Opera 11.alguma_coisa ^^

Caraca! Se a primeira impressão é a que fica mesmo, ele já ganhou pontos comigo pois, sinceramente, ele colocou Chrome, FF e Ie no chinelo!

Fora que ele tem uns complementos bem bacanas 😛

Bom, enfim… Abraços! ushaushausha

Django + PostgreSQL + virtualenv Development setup for Windows 7

Posted in Django, Python, Tecnologia with tags , on 16 de junho de 2011 by fchevitarese

Opa!

Tive a necessidade de instalar um ambiente virtual na minha máquina de desenvolvimento com Windows 7 ( 😥 )  e encontrei um tutorial bacana para se deixar tudo funfando 😉

Segue o link para quem não encontrou uma solução bacana.

http://slacy.com/blog/2011/06/django-postgresql-virtualenv-development-setup-for-windows-7/

 

Abraços!

Curso de Java gratuito

Posted in Programação, Tecnologia with tags , on 16 de junho de 2011 by fchevitarese

Opa!

Hoje, depois de encontrar o curso de Android gratuito, resolvi buscar treinamentos online ou não de Java.

Bom, encontrei trocentos milhões de links, mas o que me chamou atenção foi este http://jedi.wv.com.br/

Eu já havia baixado as apostilas e tals, mas nunca parei para ler!

Vamos ver se agora eu animo a estudar esse trem! ^^

Abraços!!!

Curso de Android grátis! O_o

Posted in Programação, Tecnologia with tags , on 16 de junho de 2011 by fchevitarese

Opa!

Recebi hoje um email falando de um curso de Android grátis.

Acho que vale a pena fazer né 😛

Segue o link para vocês !

http://thecodebakers.blogspot.com/p/curso-android-o-comeco-programacao.html

Abraços!