import isbnlib

from django.db import models

from .validators import positive


# Create your models here.
class Shelf(models.Model):
    Description = models.CharField(max_length=256, default='')
    ShortDesc = models.CharField(max_length=25, default='')

    def __str__(self):
        return self.Description

    def bookCount(self):
        return self.book_set.count()

    class Meta:
        verbose_name_plural = 'shelves'
        ordering = ['ShortDesc']


class Book(models.Model):
    ISBN = models.CharField(max_length=25, unique=True, blank=True, null=True)
    Shelf = models.ForeignKey(Shelf, on_delete=models.SET_NULL, blank=True, null=True)
    Name = models.CharField(max_length=256, default='', verbose_name='Title')
    Author = models.CharField(max_length=256, default='', blank=True, null=True)
    Date = models.CharField(max_length=256, default='', blank=True, null=True)
    Voice = models.CharField(max_length=30, default='', blank=True)
    Quantity = models.PositiveSmallIntegerField(default=1, null=False, validators=[positive])
    Notes = models.TextField(blank=True, null=True)
    Type = models.PositiveSmallIntegerField(choices=((1,"Book"), (2,"Music"), (3, "DVD")), default=1)


    def __str__(self):
        if self.ISBN:
            return isbnlib.canonical(self.ISBN) + ": " + self.Name
        else:
            return self.Name
