yp_library.utils module

yp_library.utils.get_lendinfo_by_readers(readers: QuerySet) Tuple[List[dict], List[dict]][源代码]

查询同一user关联的读者的借阅信息

参数:

readers (QuerySet[Reader]) -- 与user关联的所有读者

返回:

两个list,分别表示未归还记录和已归还记录

返回类型:

List[dict], List[dict]

yp_library.utils.get_library_activity(num: int) QuerySet[源代码]

获取书房欢迎页面展示的活动列表 目前筛选活动的逻辑是:书房组织的、状态为报名中/等待中/进行中、活动开始时间越晚越优先

参数:

num (int) -- 最多展示多少活动

返回:

展示的活动

返回类型:

QuerySet[Activity]

yp_library.utils.get_my_records(reader_id: str, returned: bool | None = None, status: list | int | Status = None) List[dict][源代码]

查询给定读者的借书记录

参数:
  • reader_id (str) -- reader的id

  • returned (bool, optional) -- 如非空,则限定是否已归还, defaults to None

  • status (Union[list, tuple, int, LendRecord.Status], optional) -- 如非空,则限定当前状态, defaults to None

返回:

查询结果,每个记录包括val_list中的属性以及记录类型(key为'type': 对于已归还记录,False表示逾期记录,True表示正常记录;对于未归还记录, 'normal'表示一般记录,'overtime'表示逾期记录,'approaching'表示接近 期限记录即距离应归还时期<=1天)

返回类型:

List[dict]

yp_library.utils.get_query_dict(post_dict: QueryDict) Dict[str, Any][源代码]

从HttpRequest的POST中提取出用作search_books参数的query_dict

参数:

post_dict (QueryDict) -- request.POST

返回:

一个词典,key为id/identity_code/title/author/publisher/returned/keywords, value为相应的query

返回类型:

dict

yp_library.utils.get_readers_by_user(user: User) QuerySet[源代码]

根据学号寻找与user关联的reader,要求必须为个人账号且账号必须通过学号关联至少一个reader,否则抛出AssertionError

参数:

user (User) -- HttpRequest的User

抛出:
  • AssertionError -- 只允许个人账户登录

  • AssertionError -- user的学号没有关联任何书房账号

返回:

与user关联的所有reader

返回类型:

QuerySet[Reader]

获取推荐/新入馆书目(以id为入馆顺序)

参数:
  • num (int) -- 最多展示多少本书

  • newest (bool, optional) -- 是否获取新入馆书目, defaults to False

返回:

包含推荐书目/新入馆书目的QuerySet

返回类型:

QuerySet[Book]

yp_library.utils.search_books(**query_dict) QuerySet[源代码]

根据给定的属性查询书

参数:

query_dict (dict) -- key为id/identity_code/title/author/publisher/returned, value为相应的query id和returned是精确查询,剩下四个是string按contains查询 特别地,还支持全关键词查询:同时在identity_code/title/author/publisher中检索word

返回:

查询结果,每个记录是Book表的一行

返回类型:

QuerySet[Book]

yp_library.utils.to_feedback_url(request: HttpRequest) str[源代码]

检查预约记录是否可以申诉。 如果可以,向session添加传递到反馈填写界面的信息。 最终函数返回跳转到的url。

参数:

request (HttpRequest) -- http请求

返回:

即将跳转到的url

返回类型:

str