from django.db import models
from app.models import ItfModel
from sorl.thumbnail import get_thumbnail

class EmailerIssue(ItfModel):
    title = models.CharField(max_length=512)
    date = models.DateField()
    issue_no = models.IntegerField()    
    published = models.BooleanField(default=False)
    fts_fields = ['title', 'emailerarticle__text']

    def __unicode__(self):
        return self.title

    class Meta:
        ordering = ['-issue_no']

    

    def info_dict(self):
        return {
            'issue': self,
            'weblinks': Weblink.objects.filter(issue=self),
            'articles': EmailerArticle.objects.filter(issue=self),
            'bbitems': BulletinBoardItem.objects.filter(issue=self)
        }

    def list_dict(self):
        return {
            'id': self.id,
            'title': self.title
        }

    def main_image(self):
        for article in self.emailerarticle_set.all():
            if article.main_image:
                return article.main_image
        return None        

    @classmethod
    def get_qset(kls):
        return kls.objects.filter(published=True)

class EmailerArticle(models.Model):
    issue = models.ForeignKey(EmailerIssue)
    title = models.CharField(max_length=512)
    subtitle = models.TextField(blank=True)
    author = models.CharField(max_length=512, blank=True)
    author_bio = models.TextField(blank=True)
    main_image = models.ImageField(upload_to='upload/images/emailer/', blank=True)
    text = models.TextField()
    position = models.IntegerField(null=True)
    
    def __unicode__(self):
        return self.title

    def get_images(self):
        return self.articleimage_set.all()

    def getImageHTML(self, short_name, typ):
        img = ArticleImage.objects.filter(article=self).filter(short_name=short_name)
        if len(img) > 0:
            return img[0].getHTML(typ)
        else:
            return ''

class ArticleImage(models.Model):
    image = models.ImageField(upload_to='upload/images/emailer/')
    caption = models.CharField(max_length=512, blank=True)
    article = models.ForeignKey(EmailerArticle)
    short_name = models.CharField(max_length=64, blank=True, help_text='Short name to insert images into article')

    def __unicode__(self):
        return self.caption

    def getThumbPath(self, size):
        return get_thumbnail(self.image, size).url

    def getHTML(self, typ):
        thumb = self.getThumbPath("450x380")
        caption = self.caption
        return "<p style='text-align:center;margin-top:6px;margin-bottom:6px;'><img title='%s' src='%s' style='border:1px solid #f7c00c' /><br />%s</p>" % (caption, thumb, caption)
#        return "<img title='%s' src='%s' style='display:block;margin:0 auto;border:1px solid #f7c00c;' />" % (caption, thumb,)


class Weblink(models.Model):
    url = models.URLField()
    title = models.CharField(max_length=512)
    box_title = models.CharField(max_length=512, blank=True)
    text = models.TextField(blank=True)
    issue = models.ForeignKey(EmailerIssue)

    def __unicode__(self):
        return self.url


class BulletinBoardItem(models.Model):
    issue = models.ForeignKey(EmailerIssue)
    title = models.CharField(max_length=512)
    box_title = models.CharField(max_length=512, blank=True)
    text = models.TextField()
    position = models.IntegerField(default=1)

    def __unicode__(self):
        return self.title
