Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # -*- coding: utf-8 -*-
- from django.db import models
- from django.contrib.auth.models import User
- 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'),
- (u'DF', u'DF'), (u'ES', u'ES'), (u'GO', u'GO'), (u'MA', u'MA'), (u'MT', u'MT'), (u'MS', u'MS'),
- (u'MG', u'MG'), (u'PA', u'PA'), (u'PB', u'PB'), (u'PR', u'PR'), (u'PE', u'PE'), (u'PI', u'PI'),
- (u'RJ', u'RJ'), (u'RN', u'RN'), (u'RS', u'RS'), (u'RO', u'RO'), (u'RR', u'RR'), (u'SC', u'SC'),
- (u'SP', u'SP'), (u'SE', u'SE'), (u'TO', u'TO')]
- tp_ministerio = [(u"Ancião", u"Ancião"), (u"Cooperador", u"Cooperador"), (u"Diácono", u"Diácono"),
- (u"Cooperador Jovens", u"Cooperador de Jovens")]
- inst_familia = [(u"Cordas", u"Cordas"), (u"Madeiras", u"Madeiras"), (u"Metais", u"Metais"),
- (u"Saxofones", u"Saxofones"), (u"Teclas", u"Teclas")]
- situacao_musico = [(u"Oficializado", u"Oficializado"), (u"Cultos Oficiais", u"Culto OFicial"),
- (u"Reunião de Jovens", u"Reunião de Jovens"), (u"Ensaios", u"Ensaios"),
- (u"Escolinha", u"Escolinha")]
- tp_musico = [(u"Músico", u"Músico"), (u"Organista", u"Organista"), (u"Instrutor", u"Instrutor"),
- (u"Instrutora", u"Instrutora"), (u"Encarregado Local", u"Encarregado Local"),
- (u"Examinadora", u"Examinadora"), (u"Encarregado Regional", u"Encarregado Regional")]
- class Administracao(models.Model):
- '''
- Modelo de armazenamento das administrações
- '''
- cod_relatorio = models.CharField(u"Relatório", max_length = 10, unique = True)
- nome = models.CharField(u"Nome", max_length = 30, unique = True)
- cidade = models.CharField(u"Cidade", max_length = 30)
- estado = models.CharField(u"Estado", max_length = 2, choices = estados)
- def __unicode__(self):
- return self.nome
- class Meta:
- verbose_name_plural = u"administrações"
- verbose_name = u"administração"
- class Comum(models.Model):
- '''
- Modelo de armazenamento das comuns
- '''
- cod_relatorio = models.CharField(u"Relatório", max_length = 10, unique = True)
- nome = models.CharField(u"Nome", max_length = 30, unique = True)
- administracao = models.ForeignKey(Administracao)
- def __unicode__(self):
- return self.nome
- class Meta:
- ordering = ['nome']
- verbose_name_plural = "comuns"
- verbose_name = "comum"
- class Pessoa(models.Model):
- '''
- Classe abstrata de pessoas
- '''
- user = models.OneToOneField(User)
- nome_usuario = models.CharField(max_length = 100)
- nome = models.CharField(max_length = 100)
- tel_fixo = models.CharField(u"Telefone", max_length = 14, blank = True, null = True)
- tel_celular = models.CharField(u"Celular", max_length = 14, blank = True, null = True)
- email = models.EmailField(u"Email", blank = True, null = True)
- inativo = models.BooleanField("Oculto?")
- comum = models.ForeignKey(Comum)
- observacoes = models.TextField(u"Observações", max_length = 1000, blank = True, null = True)
- def nusuario(self, nome = ""):
- '''
- classe que cria um nome de usuário
- '''
- cod_ = Comum.objects.get(id = self.comum.id)
- cod_relatorio = cod_.cod_relatorio
- n_pessoa = nome.lower()
- ls_n_pessoa = n_pessoa.split(" ")
- n_usuario = ls_n_pessoa[0] + " " + ls_n_pessoa[len(ls_n_pessoa) - 1]
- teste = n_usuario.replace(" ", "_") + "." + str(cod_relatorio)
- usr = User.objects.filter(username = teste)
- if usr:
- n_usuario = n_pessoa + "1"
- return self.nusuario(n_usuario)
- else:
- return teste
- def save(self, *args, **kwargs):
- '''
- reimplementando o metodo salvar...
- '''
- if not self.id:
- nome = self.nome
- lsnome = self.nome.split(" ")
- nome_usuario = self.nusuario(nome)
- usr = User.objects.create_user(nome_usuario, self.email, self.nome)
- usr.first_name = u"" + lsnome[0]
- usr.last_name = u" ".join(lsnome[1:])
- usr.is_active = False
- usr.save()
- self.user = usr
- super(Pessoa, self).save(*args, **kwargs)
- else:
- self.user.first_name = self.nome + u''
- self.user.email = self.email
- self.user.save()
- super(Pessoa, self).save(*args, **kwargs)
- class Meta:
- abstract = True
- ordering = ['nome']
- class Ministerio(Pessoa):
- '''
- Ministério da Igreja
- '''
- ministerio = models.CharField(u"Ministério", max_length = 30, choices = tp_ministerio)
- def __unicode__(self):
- return self.ministerio
- class Meta:
- verbose_name_plural = u"Irmãos do Ministério"
- verbose_name = u"Irmão do Ministério"
- class Instrumento(models.Model):
- nome = models.CharField(max_length = 30)
- familia = models.CharField(u"Família", max_length = 20, choices = inst_familia)
- class Meta:
- ordering = ['nome']
- def __unicode__(self):
- return self.nome
- class Musicos(Pessoa):
- '''
- Classe de modelos que define o cadastro de músicos
- '''
- ministerio = models.CharField(u"Ministério", default = u"Músico",
- max_length = 30, choices = tp_musico, blank = True, null = True)
- situacao = models.CharField(u"Situação",
- max_length = 20, choices = situacao_musico, blank = True, null = True)
- batizado = models.BooleanField(default = True)
- dt_ensaio = models.DateField(u"Ensaio", blank = True, null = True)
- dt_reuniao_jovens = models.DateField(u"Reunião de Jovens", blank = True, null = True)
- dt_culto_oficial = models.DateField(u"Culto Oficial", blank = True, null = True)
- dt_oficializacao = models.DateField(u"Oficialização", blank = True, null = True)
- instrumento = models.ForeignKey(Instrumento, blank = True, null = True)
- def __unicode__(self):
- return self.nome
- class Meta:
- unique_together = ("nome", "comum", "instrumento")
- verbose_name_plural = u"Músicos"
- verbose_name = u"Músico"
- ordering = ['nome']
- class Organista(Musicos):
- '''
- Classe proxy para organistas...
- '''
- cod_instrumento = Instrumento.objects.filter(familia = u"Teclas").get(nome__endswith = u"rgão")
- instrumento = cod_instrumento
- class Meta:
- proxy = True
- verbose_name = u"Organista"
- verbose_name_plural = u"Organistas"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement