2022-11-08 02:32:35 +00:00
|
|
|
from django.contrib.syndication.views import Feed
|
|
|
|
from markdown import markdown
|
2022-11-08 03:12:50 +00:00
|
|
|
import mimetypes
|
2023-01-01 23:50:57 -05:00
|
|
|
from .models import *
|
2023-01-13 02:14:06 -05:00
|
|
|
from django.conf import settings
|
2022-11-08 02:32:35 +00:00
|
|
|
|
|
|
|
MAX_ITEM_PER_TYPE = 10
|
|
|
|
|
|
|
|
|
|
|
|
class ReviewFeed(Feed):
|
|
|
|
def get_object(self, request, id):
|
|
|
|
return User.get(id)
|
|
|
|
|
|
|
|
def title(self, user):
|
2023-01-13 02:14:06 -05:00
|
|
|
return "%s的评论" % user.display_name if user else "无效链接"
|
2022-11-08 02:32:35 +00:00
|
|
|
|
|
|
|
def link(self, user):
|
2023-01-13 02:14:06 -05:00
|
|
|
return user.url if user else settings.APP_WEBSITE
|
2022-11-08 02:32:35 +00:00
|
|
|
|
|
|
|
def description(self, user):
|
2023-01-13 02:14:06 -05:00
|
|
|
return "%s的评论合集 - NeoDB" % user.display_name if user else "无效链接"
|
2022-11-08 02:32:35 +00:00
|
|
|
|
|
|
|
def items(self, user):
|
2023-01-01 23:50:57 -05:00
|
|
|
if user is None or user.preference.no_anonymous_view:
|
2023-01-13 02:14:06 -05:00
|
|
|
return []
|
2023-01-01 23:50:57 -05:00
|
|
|
reviews = Review.objects.filter(owner=user, visibility=0)[:MAX_ITEM_PER_TYPE]
|
|
|
|
return reviews
|
|
|
|
|
|
|
|
def item_title(self, item: Review):
|
2022-11-08 02:32:35 +00:00
|
|
|
return f"{item.title} - 评论《{item.item.title}》"
|
|
|
|
|
2023-01-01 23:50:57 -05:00
|
|
|
def item_description(self, item: Review):
|
|
|
|
target_html = (
|
|
|
|
f'<p><a href="{item.item.absolute_url}">{item.item.title}</a></p>\n'
|
|
|
|
)
|
|
|
|
html = markdown(item.body)
|
2022-11-08 02:32:35 +00:00
|
|
|
return target_html + html
|
|
|
|
|
|
|
|
# item_link is only needed if NewsItem has no get_absolute_url method.
|
2023-01-01 23:50:57 -05:00
|
|
|
def item_link(self, item: Review):
|
|
|
|
return item.absolute_url
|
2022-11-08 03:12:50 +00:00
|
|
|
|
|
|
|
def item_categories(self, item):
|
2023-01-01 23:50:57 -05:00
|
|
|
return [item.item.category.label]
|
2022-11-08 03:12:50 +00:00
|
|
|
|
|
|
|
def item_pubdate(self, item):
|
|
|
|
return item.created_time
|
|
|
|
|
|
|
|
def item_updateddate(self, item):
|
|
|
|
return item.edited_time
|
|
|
|
|
|
|
|
def item_enclosure_url(self, item):
|
|
|
|
return item.item.cover.url
|
|
|
|
|
|
|
|
def item_enclosure_mime_type(self, item):
|
|
|
|
t, _ = mimetypes.guess_type(item.item.cover.url)
|
|
|
|
return t
|
|
|
|
|
|
|
|
def item_enclosure_length(self, item):
|
2023-01-01 23:50:57 -05:00
|
|
|
try:
|
|
|
|
size = item.item.cover.file.size
|
|
|
|
except Exception:
|
|
|
|
size = None
|
|
|
|
return size
|
2022-11-08 03:12:50 +00:00
|
|
|
|
|
|
|
def item_comments(self, item):
|
2023-01-01 23:50:57 -05:00
|
|
|
return item.absolute_url
|