#encoding=utf8
from django.db import models
from django.contrib.auth.models import User

# Create your models here.
class Grupo(models.Model):
    codigo = models.CharField(max_length=10)
    def __str__(self):
        return self.codigo
    class Admin:
        pass

class Facultad(models.Model):
    nombre  = models.CharField(max_length = 100)
    siglas  = models.CharField(max_length = 15, null = True)
    clave   = models.CharField(max_length = 15, unique = True)
    def __str__(self):
        return self.nombre
    class Admin:
        pass
    class Meta:
        verbose_name_plural = 'Facultades'

class Carrera(models.Model):
    nombre      = models.CharField(max_length = 100)
    clave       = models.CharField(max_length = 15, null = True)
    facultad    = models.ForeignKey(Facultad, null = True)
    plan        = models.CharField(max_length = 5)
    def __str__(self):
        return self.nombre + " Plan " + self.plan
    class Admin:
        pass
    

class Materia(models.Model):
    clave       = models.CharField(max_length=10,unique=True)
    nombre      = models.CharField(max_length=50)    
    carreras    = models.ManyToManyField(Carrera, through='MateriaCarrera')
    def __str__(self):
        return self.nombre
    class Admin:
        pass

class Maestro(models.Model):
    nombres     = models.CharField(max_length=50)
    apellidos   = models.CharField(max_length=50)
    materias    = models.ManyToManyField(Materia, through='Clase')
    def __str__(self):
        return self.apellidos + ' ' +self.nombres
    class Admin:
        pass
    
class Dia(models.Model):
    LISTA_DIAS = (('lun','Lunes'),
                  ('mar','Martes'),
                  ('mie','Miércoles'),
                  ('jue','Jueves'),
                  ('vie','Viernes'),
                  ('sab','Sábado'),
                  ('dom','Domingo'))
    nombre = models.CharField(max_length=3,choices=LISTA_DIAS,unique=True)
    def __str__(self):
        return self.nombre
    class Admin:
        pass
    
class Clase(models.Model):
    maestro = models.ForeignKey(Maestro)
    materia = models.ForeignKey(Materia)
    grupo   = models.ForeignKey(Grupo)
    ciclo   = models.CharField(max_length=5)
    activo  = models.BooleanField(default=True)
    def __str__(self):
        return self.materia.nombre +" "+self.grupo.codigo
    class Admin:
        pass

class Horario(models.Model):
    clase = models.ForeignKey(Clase)
    dia = models.ForeignKey(Dia)    
    hora = models.PositiveSmallIntegerField()
    duracion = models.PositiveSmallIntegerField()
    salon = models.CharField(max_length=5)        
    alumnos = models.ManyToManyField(User, through='AlumnoHorario')
    def __str__(self):
        return self.clase.materia.nombre + ' ' + self.clase.grupo.codigo +' '+self.dia.nombre
    class Admin:
        pass

class AlumnoHorario(models.Model):
    alumno  = models.ForeignKey(User)
    horario = models.ForeignKey(Horario)
    numero_horario = models.PositiveSmallIntegerField()
    def __str__(self):
        return self.alumno.last_name +" " + self.horario.clase.materia.nombre + " " + self.horario.clase.grupo.codigo
    class Admin:
        pass

class MateriaCarrera(models.Model):
    materia     = models.ForeignKey(Materia)
    semestre    = models.PositiveSmallIntegerField()
    carrera     = models.ForeignKey(Carrera)
    def __str__(self):
        return self.materia.nombre + " " +self.carrera.clave
    class Admin:
        pass

class DatosEscolares(models.Model):
    alumno      = models.ForeignKey(User, unique = True)
    matricula   = models.PositiveIntegerField()
    facultad    = models.ForeignKey(Facultad)
    carrera     = models.ForeignKey(Carrera)
    def __str__(self):
        return str(self.matricula)+ " " + self.alumno.last_name + " " + self.alumno.first_name
    class Admin:
        pass
    class Meta:
        verbose_name_plural = 'Datos Escolares'
    
