from django.db import models
#from django.contrib.auth.models import User
class Session(models.Model):
    session = models.CharField(max_length=20, blank=True, null=True)
    created = models.DateTimeField(auto_now_add=True, null=True)
    updated = models.DateTimeField(auto_now=True, null=True)

    class Meta:
        ordering = ('-created',)

    def __str__(self):
        return str(self.session)

    @property
    def schoolURL(self):
        try:
            url = self.school.url
        except:
            url = ''
        return url

class Three(models.Model):
    term = models.CharField(max_length=6, null=True)
    created = models.DateTimeField(auto_now_add=True, null=True)
    updated = models.DateTimeField(auto_now=True, null=True)

    def __str__(self):
        try:
            return str(self.term)
        except:
            return str(self.id)

    class Meta:
        ordering = ('-created',)

class Term(models.Model):
    session = models.ForeignKey('management.Session', on_delete=models.SET_NULL, null=True)
    term = models.ForeignKey('management.Three', on_delete=models.SET_NULL, null=True, related_name='three_term')
    head = models.ForeignKey('account.Person', on_delete = models.SET_NULL, blank=True, null=True, verbose_name="Head of School's Name (Primary)", related_name='term_head')
    head2 = models.ForeignKey('account.Person', on_delete = models.SET_NULL, blank=True, null=True, verbose_name="Head of School's Name (Secondary)", related_name='term_head2')
    school = models.ImageField(upload_to='stamp_img/%Y/%m/%d', null=True, blank=True, verbose_name="School's Stamp")
    current = models.BooleanField(max_length=5, default = False)
    subject_recorded = models.ManyToManyField('management.subject', blank=True, related_name="subject_term")
    paid_school = models.ManyToManyField('account.Person', blank=True, related_name="person_term")
    number = models.IntegerField(blank=True, default = 0, verbose_name="No of Days School Opened")
    next = models.DateField(blank=True, null=True, verbose_name="Resumption")
    last = models.DateField(blank=True, null=True, verbose_name="Vacation")
    report = models.BooleanField(max_length=5, default = False, verbose_name="Release Result")
    created = models.DateTimeField(auto_now_add=True, null=True)
    updated = models.DateTimeField(auto_now=True, null=True)

    def __str__(self):
        try:
            return str(self.session) + " - " + str(self.term)
        except:
            return str(self.id)

    class Meta:
        ordering = ('-created',)

class Class(models.Model):
    SECTION_CHOICES = [
        ('Nursery', 'Nursery'),
		('Primary', 'Primary'),
        ('Secondary', 'Secondary'),
    ]
    section = models.CharField(max_length=11, choices=SECTION_CHOICES, null=True)
    classe = models.CharField(max_length=100, null=True, verbose_name="Class")
    teacher = models.ForeignKey('account.Person', on_delete=models.SET_NULL, null=True)
    signature = models.ImageField(upload_to='signature_img/%Y/%m/%d', null=True, blank=True, verbose_name="Class Teacher's Signature")
    created = models.DateTimeField(auto_now_add=True, null=True)
    updated = models.DateTimeField(auto_now=True, null=True)

    def __str__(self):
        try:
            return str(self.classe)
        except:
            return str(self.id)

    @property
    def imageURL(self):
        try:
            url = self.image.url
        except:
            url = ''
        return url

    class Meta:
        ordering = ('-created',)
        verbose_name = 'Class'
        verbose_name_plural = 'Classes'

class Subject(models.Model):
    classe = models.ForeignKey('management.Class', on_delete=models.SET_NULL, null=True, verbose_name="Class")
    subject = models.CharField(max_length=100)
    teacher = models.ForeignKey('account.Person', on_delete=models.SET_NULL, null=True, related_name='subject_teacher')
    created = models.DateTimeField(auto_now_add=True, null=True)
    updated = models.DateTimeField(auto_now=True, null=True)

    def __str__(self):
        try:
            return str(self.classe) + " | " + str(self.subject)
        except:
            return str(self.id)

    class Meta:
        ordering = ('-created',)
        # verbose_name = 'Class'
        # verbose_name_plural = 'Classes'

class Spreadsheet(models.Model):
    term = models.ForeignKey('management.Term', on_delete=models.SET_NULL, null=True)
    classe = models.ForeignKey('management.Class', on_delete=models.SET_NULL, null=True, blank=True)
    created = models.DateTimeField(auto_now_add=True, null=True)
    updated = models.DateTimeField(auto_now=True, null=True)

    def __str__(self):
        try:
            return str(self.term)
        except:
            return str(self.id)
    class Meta:
        ordering = ('-created',)
