Advertisement
phiron

Model Completo de Cadastro

May 15th, 2012
187
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 6.68 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2. from django.db import models
  3. from django.contrib.auth.models import User
  4.  
  5. estados = [(u'AC', u'AC'), (u'AL', u'AL'), (u'AP', u'AP'), (u'AP', u'AP'), (u'BA', u'BA'), (u'CE', u'CE'),
  6.               (u'DF', u'DF'), (u'ES', u'ES'), (u'GO', u'GO'), (u'MA', u'MA'), (u'MT', u'MT'), (u'MS', u'MS'),
  7.               (u'MG', u'MG'), (u'PA', u'PA'), (u'PB', u'PB'), (u'PR', u'PR'), (u'PE', u'PE'), (u'PI', u'PI'),
  8.               (u'RJ', u'RJ'), (u'RN', u'RN'), (u'RS', u'RS'), (u'RO', u'RO'), (u'RR', u'RR'), (u'SC', u'SC'),
  9.               (u'SP', u'SP'), (u'SE', u'SE'), (u'TO', u'TO')]
  10.  
  11. tp_ministerio = [(u"Ancião", u"Ancião"), (u"Cooperador", u"Cooperador"), (u"Diácono", u"Diácono"),
  12.                     (u"Cooperador Jovens", u"Cooperador de Jovens")]
  13.  
  14. inst_familia = [(u"Cordas", u"Cordas"), (u"Madeiras", u"Madeiras"), (u"Metais", u"Metais"),
  15.                 (u"Saxofones", u"Saxofones"), (u"Teclas", u"Teclas")]
  16.  
  17. situacao_musico = [(u"Oficializado", u"Oficializado"), (u"Cultos Oficiais", u"Culto OFicial"),
  18.                       (u"Reunião de Jovens", u"Reunião de Jovens"), (u"Ensaios", u"Ensaios"),
  19.                       (u"Escolinha", u"Escolinha")]                    
  20.                    
  21. tp_musico = [(u"Músico", u"Músico"), (u"Organista", u"Organista"), (u"Instrutor", u"Instrutor"),
  22.              (u"Instrutora", u"Instrutora"), (u"Encarregado Local", u"Encarregado Local"),
  23.              (u"Examinadora", u"Examinadora"), (u"Encarregado Regional", u"Encarregado Regional")]
  24.  
  25. class Administracao(models.Model):
  26.     '''
  27.    Modelo de armazenamento das administrações
  28.    '''
  29.     cod_relatorio = models.CharField(u"Relatório", max_length = 10, unique = True)
  30.     nome = models.CharField(u"Nome", max_length = 30, unique = True)
  31.     cidade = models.CharField(u"Cidade", max_length = 30)
  32.     estado = models.CharField(u"Estado", max_length = 2, choices = estados)
  33.     def __unicode__(self):
  34.         return self.nome
  35.     class Meta:
  36.         verbose_name_plural = u"administrações"
  37.         verbose_name = u"administração"
  38.  
  39. class Comum(models.Model):
  40.     '''
  41.    Modelo de armazenamento das comuns
  42.    '''
  43.     cod_relatorio = models.CharField(u"Relatório", max_length = 10, unique = True)
  44.     nome = models.CharField(u"Nome", max_length = 30, unique = True)
  45.     administracao = models.ForeignKey(Administracao)
  46.     def __unicode__(self):
  47.         return self.nome
  48.     class Meta:
  49.         ordering = ['nome']
  50.         verbose_name_plural = "comuns"
  51.         verbose_name = "comum"
  52.  
  53. class Pessoa(models.Model):
  54.     '''
  55.    Classe abstrata de pessoas
  56.    '''
  57.     user = models.OneToOneField(User)
  58.     nome_usuario = models.CharField(max_length = 100)
  59.     nome = models.CharField(max_length = 100)
  60.     tel_fixo = models.CharField(u"Telefone", max_length = 14, blank = True, null = True)
  61.     tel_celular = models.CharField(u"Celular", max_length = 14, blank = True, null = True)
  62.     email = models.EmailField(u"Email", blank = True, null = True)
  63.     inativo = models.BooleanField("Oculto?")
  64.     comum = models.ForeignKey(Comum)
  65.     observacoes = models.TextField(u"Observações", max_length = 1000, blank = True, null = True)
  66.     def nusuario(self, nome = ""):
  67.         '''
  68.        classe que cria um nome de usuário
  69.        '''
  70.         cod_ = Comum.objects.get(id = self.comum.id)
  71.         cod_relatorio = cod_.cod_relatorio
  72.         n_pessoa = nome.lower()
  73.         ls_n_pessoa = n_pessoa.split(" ")
  74.         n_usuario = ls_n_pessoa[0] + " " + ls_n_pessoa[len(ls_n_pessoa) - 1]
  75.         teste = n_usuario.replace(" ", "_") + "." + str(cod_relatorio)
  76.         usr = User.objects.filter(username = teste)
  77.         if usr:
  78.             n_usuario = n_pessoa + "1"
  79.             return self.nusuario(n_usuario)
  80.         else:
  81.             return teste
  82.     def save(self, *args, **kwargs):
  83.         '''
  84.        reimplementando o metodo salvar...
  85.        '''
  86.         if not self.id:
  87.             nome = self.nome
  88.             lsnome = self.nome.split(" ")
  89.             nome_usuario = self.nusuario(nome)
  90.             usr = User.objects.create_user(nome_usuario, self.email, self.nome)
  91.             usr.first_name = u"" + lsnome[0]
  92.             usr.last_name = u" ".join(lsnome[1:])
  93.             usr.is_active = False
  94.             usr.save()
  95.             self.user = usr
  96.             super(Pessoa, self).save(*args, **kwargs)
  97.         else:
  98.             self.user.first_name = self.nome + u''
  99.             self.user.email = self.email
  100.             self.user.save()
  101.             super(Pessoa, self).save(*args, **kwargs)
  102.                                        
  103.     class Meta:
  104.         abstract = True
  105.         ordering = ['nome']
  106.  
  107. class Ministerio(Pessoa):
  108.     '''
  109.    Ministério da Igreja
  110.    '''
  111.     ministerio = models.CharField(u"Ministério", max_length = 30, choices = tp_ministerio)
  112.     def __unicode__(self):
  113.         return self.ministerio
  114.     class Meta:
  115.         verbose_name_plural = u"Irmãos do Ministério"
  116.         verbose_name = u"Irmão do Ministério"
  117.  
  118. class Instrumento(models.Model):
  119.     nome = models.CharField(max_length = 30)
  120.     familia = models.CharField(u"Família", max_length = 20, choices = inst_familia)
  121.     class Meta:
  122.         ordering = ['nome']
  123.     def __unicode__(self):
  124.         return self.nome
  125.    
  126. class Musicos(Pessoa):
  127.     '''
  128.    Classe de modelos que define o cadastro de músicos
  129.    '''          
  130.     ministerio = models.CharField(u"Ministério", default = u"Músico",
  131.                                   max_length = 30, choices = tp_musico, blank = True, null = True)
  132.     situacao = models.CharField(u"Situação",
  133.                                 max_length = 20, choices = situacao_musico, blank = True, null = True)
  134.     batizado = models.BooleanField(default = True)
  135.     dt_ensaio = models.DateField(u"Ensaio", blank = True, null = True)
  136.     dt_reuniao_jovens = models.DateField(u"Reunião de Jovens", blank = True, null = True)
  137.     dt_culto_oficial = models.DateField(u"Culto Oficial", blank = True, null = True)
  138.     dt_oficializacao = models.DateField(u"Oficialização", blank = True, null = True)
  139.     instrumento = models.ForeignKey(Instrumento, blank = True, null = True)
  140.     def __unicode__(self):
  141.         return self.nome
  142.     class Meta:
  143.         unique_together = ("nome", "comum", "instrumento")
  144.         verbose_name_plural = u"Músicos"
  145.         verbose_name = u"Músico"
  146.         ordering = ['nome']
  147.  
  148. class Organista(Musicos):
  149.     '''
  150.    Classe proxy para organistas...
  151.    '''
  152.     cod_instrumento = Instrumento.objects.filter(familia = u"Teclas").get(nome__endswith = u"rgão")
  153.     instrumento = cod_instrumento
  154.     class Meta:
  155.         proxy = True
  156.         verbose_name = u"Organista"
  157.         verbose_name_plural = u"Organistas"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement