yp_library.views 源代码

from app.views_dependency import ProfileTemplateView
from utils.global_messages import transfer_message_context
from yp_library.utils import (
    get_readers_by_user,
    search_books,
    get_query_dict,
    get_lendinfo_by_readers,
    get_library_activity,
    get_recommended_or_newest_books,
)
from yp_library.config import library_config as CONFIG
from achievement.api import unlock_achievement

DISPLAY_ACTIVITY_NUM = 3  # 首页展示的书房活动数量
DISPLAY_RECOMMENDATION_NUM = 5  # 首页展示的推荐书目数量
# DISPLAY_NEW_BOOK_NUM = 5 # 首页展示的新入馆书目数量


[文档] class WelcomeView(ProfileTemplateView): """ 书房首页,提供近期活动、随机推荐、开馆时间; 首页的查询功能应该可以通过前端转到search页面,这里未做处理 """ template_name = "yp_library/welcome.html" page_name = "元培书房" need_prepare = False
[文档] def get(self): # 借阅记录 try: readers = get_readers_by_user(self.request.user) except AssertionError as e: records_list = [] else: unreturned_records_list, returned_records_list = get_lendinfo_by_readers( readers) records_list = unreturned_records_list + returned_records_list transfer_message_context(self.request.GET, self.extra_context, normalize=True) self.extra_context.update({ "activities": get_library_activity(num=DISPLAY_ACTIVITY_NUM), "opening_time_start": CONFIG.start_time, "opening_time_end": CONFIG.end_time, "records_list": records_list, "recommendation": get_recommended_or_newest_books( num=DISPLAY_RECOMMENDATION_NUM, newest=False), }) return self.render()
[文档] class SearchView(ProfileTemplateView): """ 图书检索页面 """ template_name = "yp_library/search.html" page_name = "书籍搜索结果" need_prepare = False
[文档] def get(self): transfer_message_context(self.request.GET, self.extra_context, normalize=True) return self.render()
[文档] def post(self): self.extra_context.update({ "search_results_list": search_books(**get_query_dict(self.request.POST)), }) unlock_achievement(self.request.user, "使用一次元培书房查询") # 解锁成就-使用一次元培书房查询 return self.render()