from django.contrib.syndication.views import Feed
from django.shortcuts import get_object_or_404
from markupwiki.models import Article, ArticleVersion

class LatestEditsFeed(Feed):
    title = 'Recent Changes'
    link = '/'
    description = 'Latest Changes to Wiki Articles'

    def items(self):
        return ArticleVersion.objects.order_by('-timestamp').select_related()[:20]

    def item_title(self, item):
        return unicode(item)

    def item_description(self, item):
        return unicode(item.body)

    def item_link(self, item):
        return item.get_absolute_url()


class LatestArticleEditsFeed(Feed):

    def get_object(self, request, title):
        return get_object_or_404(Article, title=title)

    def title(self, obj):
        return 'Recent changes to %s' % obj

    def description(self, obj):
        return 'Recent changes made to %s' % obj

    def link(self, obj):
        return obj.get_absolute_url()

    def items(self, obj):
        return obj.versions.order_by('-timestamp').select_related()[:20]

    def item_title(self, item):
        return unicode(item)

    def item_description(self, item):
        return unicode(item.body)

    def item_link(self, item):
        return item.get_absolute_url()