achievement.utils module

成就系统 API - 处理用户触发成就 - 后台批量添加成就

achievement.utils.bulk_add_achievement_record(users: QuerySet, achievement: Achievement)[源代码]

批量添加成就解锁记录 若已解锁则不添加 按需发布通知与发放元气值奖励

Args: - users (QuerySet[User]): 待更改User的QuerySet - achievement (Achievement): 需添加的成就

Returns: - bool: 是否成功添加

警告

本函数保证原子化,且保证并行安全性,但后者实现存在风险

achievement.utils.get_students_by_grade(grade: int) QuerySet[源代码]

传入目标入学年份数,返回满足的、未毕业的学生User列表。 示例:今年是2023年,我希望返回入学第二年的user,即查找username前两位为22的user 仅限秋季学期开始后使用。

achievement.utils.get_students_without_credit_record(start_date: date, end_date: date) QuerySet[源代码]

获取一段时间内没有扣分记录的在读同学

Args: - start_date: 查询起始时间 - end_date: 查询结束时间

Returns: - QuerySet[User]: 没有扣分记录的在读同学

achievement.utils.personal_achievements(user: User)[源代码]
achievement.utils.trigger_achievement(user: User, achievement: Achievement)[源代码]

处理用户触发成就,添加单个解锁记录 若已解锁则不添加 按需发布通知与发放元气值奖励

Args: - user (User): 触发该成就的用户 - achievement (Achievement): 该成就

Returns: - bool: 是否成功解锁

警告

本函数保证原子化,且保证并行安全性,但后者实现存在风险