Advertisement
maurobaraldi

Pilates Academy Model

Jul 28th, 2014
237
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.62 KB | None | 0 0
  1. # coding: utf-8
  2.  
  3. from __future__ import absolute_import
  4.  
  5. from django.db import models
  6. from django.contrib.auth.models import User
  7.  
  8.  
  9. class Instrutor(models.Model):
  10.     nome = models.CharField(max_length=250, verbose_name='Nome do Professor')
  11.     login = models.OneToOneField(User)
  12.     telefone = models.CharField(max_length=11, blank=True, null=True)
  13.     celular = models.CharField(max_length=11, blank=True, null=True)
  14.     endereco = models.CharField(max_length=250, blank=True, null=True)
  15.     cidade = models.CharField(max_length=200, verbose_name='Cidade')
  16.     email = models.EmailField(verbose_name='Email', blank=True, null=True)
  17.     observacao = models.CharField(max_length=250, blank=True, null=True)
  18.  
  19.     class Meta:
  20.         verbose_name = 'Instrutor'
  21.         verbose_name_plural = 'Instrutores'
  22.  
  23.     def __unicode__(self):
  24.         return self.nome
  25.  
  26.  
  27. class Plano(models.Model):
  28.     nome = models.CharField(max_length=250, unique=True)
  29.     valor = models.CharField(max_length=10)
  30.     qt_aulas = models.IntegerField(verbose_name="Quantidade de Aulas")
  31.     status = models.BooleanField('Ativo')
  32.  
  33.     class Meta:
  34.         verbose_name = 'Plano'
  35.         verbose_name_plural = 'Planos'
  36.  
  37.     def __unicode__(self):
  38.         return self.nome
  39.  
  40.  
  41. class Aluno(models.Model):
  42.     login = models.OneToOneField(User)
  43.     nome = models.CharField(max_length=250)
  44.     telefone = models.CharField(max_length=11, blank=True, null=True)
  45.     celular = models.CharField(max_length=11, blank=True, null=True)
  46.     bairro = models.CharField(max_length=200, blank=True, null=True)
  47.     endereco = models.CharField(max_length=250, blank=True, null=True)
  48.     data_nasc = models.DateField('Data Nascimento')
  49.     status = models.BooleanField('Ativo')
  50.     obs = models.TextField(blank=True, null=True)
  51.     cpf = models.CharField(max_length=14, blank=True, null=True)
  52.  
  53.     class Meta:
  54.         verbose_name = 'Aluno'
  55.         verbose_name_plural = 'Alunos'
  56.  
  57.     def __unicode__(self):
  58.         return self.nome
  59.  
  60.  
  61. class PlanoAluno(models.Model):
  62.     plano = models.ForeignKey(Plano)
  63.     aluno = models.ForeignKey(Aluno)
  64.     qt_aulas = models.IntegerField('Quantidade de Aulas', null=True, blank=True)
  65.     qt_restante = models.IntegerField('Quantidade de Aulas restantes', null=True, blank=True)
  66.  
  67.     class Meta:
  68.         verbose_name = 'Plano do Aluno'
  69.         verbose_name_plural = 'Planos dos Alunos'
  70.  
  71.     def __unicode__(self):
  72.         return self.plano.nome
  73.  
  74.     def save(self, *args, **kwargs):
  75.         if self.qt_aulas is None:
  76.             self.qt_aulas = self.plano.qt_aulas
  77.         if self.qt_restante is None:
  78.             self.qt_restante = self.plano.qt_aulas
  79.  
  80.         super(PlanoAluno, self).save(*args, **kwargs)
  81.  
  82.  
  83. class Aula(models.Model):
  84.     instrutor = models.ForeignKey(Instrutor)
  85.     cliente = models.ForeignKey(User)
  86.     plano = models.ForeignKey(PlanoAluno)
  87.     data_start = models.DateTimeField(verbose_name='Inicio da Aula')
  88.     data_end = models.DateTimeField(verbose_name='Fim da Aula')
  89.     descricao = models.TextField(verbose_name='Descrição da Aula')
  90.  
  91.     class Meta:
  92.         verbose_name = 'Aula'
  93.         verbose_name_plural = 'Aulas'
  94.         ordering = ['-data_start']
  95.         permissions = (
  96.             ('aluno', 'Acesso de Cliente'),
  97.             ('instrutor', 'Acesso de Instrutor'),
  98.             ('recepcionista', 'Acesso de Recepcionista'),
  99.             ('admin', 'Acesso de Administrador'))
  100.  
  101.     def __unicode__(self):
  102.         return '{}'.format(self.id)
  103.  
  104.     def save(self, *args, **kwargs):
  105.         if not self.plano.qt_restante:
  106.             self.plano.qt_restante = self.plano.plano.qt_aulas
  107.         self.plano.qt_restante -= 1
  108.         self.plano.save()
  109.         super(Aula, self).save(*args, **kwargs)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement