# coding: utf-8
from django.db import models
from django.template.defaultfilters import truncatewords
from django.core.urlresolvers import reverse
from taggit.managers import TaggableManager

from legislature.models import MemopolRepresentative


class PositionManager(models.Manager):
    """A simple model manager for querying published Positions"""
    use_for_related_fields = True

    def published(self, **kwargs):
        return self.filter(published=True, **kwargs)


class Position(models.Model):
    representative = models.ForeignKey(
        MemopolRepresentative,
        related_name='positions')
    datetime = models.DateField()
    text = models.TextField()
    link = models.URLField()
    published = models.BooleanField(default=False)
    tags = TaggableManager()

    # Adds our custom manager
    objects = PositionManager()

    @property
    def short_text(self):
        return truncatewords(self.text, 5)

    def publish(self):
        self.published = True

    def unpublish(self):
        self.published = False

    def get_absolute_url(self):
        return reverse('positions:position-detail', args=(self.pk,))