
# Copyright (c) 2006 Duncan Cragg

from django.db import models

class Keyword(models.Model):
    name = models.CharField(maxlength=50, blank=False, unique=True)
    colour = models.CharField(maxlength=8)

    class Admin:
        pass

    def __repr__(self):
        return self.name

    def __str__(self):
        return self.__repr__()

    def get_absolute_url(self):
        return '/blog/tag/%s' % self.name

class BlogPost(models.Model):
    title = models.CharField(maxlength=200)
    slug = models.SlugField(unique=True, prepopulate_from=['title'])
    content = models.TextField(
       help_text='![<b>bold</b>]! &nbsp; /[<i>italics</i>]/ &nbsp; |[<code>mono/code</code>]| &nbsp; [[blockquote]] &nbsp; -[bullet-list]-<br/>[link][http://linkable.com/] <i>or just</i> [http://linkable.com/]<br/>images: [#] thumbnail [##] flowed [###] full'
    )
    created = models.DateTimeField()
    updated = models.DateTimeField(blank=True, null=True)
    picture = models.ImageField('Picture', upload_to='pictures', blank=True)
    keywords = models.ManyToManyField(Keyword, blank=True, null=True)
    visible = models.BooleanField()

    class Admin:
        pass

    def __repr__(self):
        return 'BlogPost(%s) %s' % ( self.slug, self.title )

    def __str__(self):
        return self.__repr__()

    def get_absolute_url(self):
        return '/blog/post/%s/' % self.slug

    def comment_set_order_by_created(self):
        return self.comment_set.order_by('created')


class Comment(models.Model):
    comment_on   = models.ForeignKey(BlogPost)
    reader_name  = models.CharField( maxlength=80)
    reader_url   = models.URLField(  blank=True)
    reader_email = models.EmailField(blank=True)
    reader_ip    = models.CharField( maxlength=80, blank=True)
    created      = models.DateTimeField(auto_now_add=True)
    content      = models.TextField( maxlength=4000)

    class Admin:
        pass

    def get_absolute_url(self):
        return self.comment_on.get_absolute_url() + ( '#comment-%d' % self.id )

    def __repr__(self):
        return 'Comment on %s by %s' % (self.comment_on, self.reader_name)

    def __str__(self):
        return self.__repr__()

