"""
SYNCRO models
"""

from django.db import models
from lazysolutions.models import User
from django.utils import timezone


class Serie(models.Model):
    uid = models.CharField(max_length=128, primary_key=True)
    name = models.CharField(max_length=255)
    url = models.TextField(blank=True)
    processed = models.BooleanField(default=False)
    created = models.DateTimeField(default=timezone.now)
    updated = models.DateTimeField(default=timezone.now)

    def __str__(self):
        return '%s' % self.name


class Speaker(models.Model):
    uid = models.CharField(max_length=128, primary_key=True)
    name = models.CharField(max_length=255)
    url = models.TextField(blank=True)
    processed = models.BooleanField(default=False)

    def __str__(self):
        return '%s' % self.name


class Actor(models.Model):
    uid = models.CharField(max_length=128, primary_key=True)
    name = models.CharField(max_length=255)

    def __str__(self):
        return '%s' % self.name


class SpeakerSeriesLink(models.Model):
    uid = models.CharField(max_length=128, primary_key=True)
    series = models.ForeignKey(Serie, on_delete=models.CASCADE, related_name='speaker_series')
    speaker = models.ForeignKey(Speaker, on_delete=models.CASCADE, related_name='series_speaker')
    actor = models.ForeignKey(Actor, on_delete=models.CASCADE, related_name='series_actor')
    role = models.CharField(max_length=255, default="unknown")
    episodes = models.IntegerField(default=1)
    created = models.DateTimeField(default=timezone.now)

    def __str__(self):
        return '%s in %s' % (self.role, self.series.name)


class UserSeriesLink(models.Model):
    uid = models.CharField(max_length=128, primary_key=True)
    series = models.ForeignKey(Serie, on_delete=models.CASCADE, related_name='user_series_series')
    user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='user_series_user')
    created = models.DateTimeField(default=timezone.now)

    def __str__(self):
        return '%s watching %s' % (self.user.username, self.series.name)


# END
