# -*- coding: utf-8 -*-

from django.db import models
from django.utils.timezone import now
from djrichtextfield.models import RichTextField


class Institution(models.Model):
    INSTITUTION_KINDS = (
        ('u', 'University'),
        ('c', 'College'),
        ('i', 'Industry'),
        ('n', 'National Laboratory'))
    name = models.CharField(max_length=100)
    kind = models.CharField(max_length=2, choices=INSTITUTION_KINDS)

    def __str__(self):
        return self.name

    class Meta:
        ordering = ['name']


class Talk(models.Model):
    date = models.DateField(default=now)
    speaker = models.CharField(max_length=255)
    title = models.CharField(max_length=200)
    abstract = RichTextField(null=True, blank=True)
    url = models.URLField(blank=True)
    inst = models.ForeignKey(Institution, blank=True, null=True,
                             on_delete=models.CASCADE)
    pic = models.ImageField(upload_to='talks', height_field='height',
                            width_field='width', blank=True, null=True)
    height = models.SmallIntegerField(null=True, default=0)
    width = models.SmallIntegerField(null=True, default=0)

    def __str__(self):
        return "{0} — {1}".format(self.speaker, self.title)

    def display(self):
        if self.title == 'TBA':
            return self.speaker
        return self.title

    @classmethod
    def export(Talk):
        from djphys.export import Exporter
        xp = Exporter(
            Talk,
            "id;date;speaker;title;abstract;inst;pic".split(';')
        )
        objs = Talk.objects.all()
        for t in objs:
            xp.write([
                str(t.id),
                str(t.date),
                t.speaker,
                xp.text(t.title),
                xp.text(t.abstract),
                t.inst.name,
                xp.xobject(t.pic, f"pic-{t.id}"),
            ])

    class Meta:
        ordering = ['-date']
