from django.contrib.auth import get_user_model
from django.contrib.syndication.views import Feed
from django.utils import timezone
from django.utils.feedgenerator import Rss201rev2Feed

from blog.models import Article
from djangoblog.utils import CommonMarkdown

class DjangoBlogFeed(Feed):
    """
    sh:
    自定义博客RSS订阅源生成类，继承Django的Feed类
    用于生成符合RSS 2.0规范的博客内容订阅源
    """
    feed_type = Rss201rev2Feed
    description = '大巧无工,重剑无锋.'
    title = "且听风吟 大巧无工,重剑无锋. "
    link = "/feed/"

    def author_name(self):
        """返回订阅源的作者名称（此处取系统中第一个用户的昵称）"""
        return get_user_model().objects.first().nickname

    def author_link(self):
        """返回作者的个人主页链接"""
        return get_user_model().objects.first().get_absolute_url()

    def items(self):
        """
        定义RSS源中包含的内容项
        返回最新发布的5篇文章（类型为'article'，状态为'published'）
        """
        return Article.objects.filter(type='a', status='p').order_by('-pub_time')[:5]

    def item_title(self, item):
        """返回单个内容项（文章）的标题"""
        return item.title

    def item_description(self, item):
        """
        返回单个内容项（文章）的描述
        将Markdown格式的文章内容转换为HTML格式用于RSS展示
        """
        return CommonMarkdown.get_markdown(item.body)

    def feed_copyright(self):
        """返回RSS源的版权信息，包含当前年份"""
        now = timezone.now()
        return "Copyright© {year} 且听风吟".format(year=now.year)

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

    def item_guid(self, item):
        return
