achievement.management.commands.init_achievements 源代码

"""
初始化 AchievementType Achievement
假定achievement_type都存在
"""
from django.core.management.base import BaseCommand
from achievement.models import AchievementType, Achievement


[文档] class Command(BaseCommand): help = "init AchievementType Achievement"
[文档] def handle(self, *args, **options): DISPLAYED = True HIDDEN = False AUTO = True MANUAL = False achievement_info = [('元气人生', [('完成游园会印章收集任务', 3, DISPLAYED, MANUAL), ('集齐游园会全部印章', 10, HIDDEN, MANUAL), ('开始大学第二年', 5, DISPLAYED, AUTO), ('开始大学第三年', 5, DISPLAYED, AUTO), ('开始大学第四年', 5, DISPLAYED, AUTO), ('开始大学第五年', 5, HIDDEN, AUTO), ('开始大学第六年', 5, HIDDEN, AUTO), ('完成军训', 1, DISPLAYED, AUTO), ('完成书院实践育人活动', 3, DISPLAYED, MANUAL), ('参与书院嘉年华', 2, DISPLAYED, MANUAL), ('本科顺利毕业', 35, DISPLAYED, AUTO)]), ('洁身自好', [('月度卫生检查通过', 1, DISPLAYED, MANUAL), ('一学期月度卫生检查均获得“优秀”评价', 10, HIDDEN, AUTO), ('一学年月度卫生检查均获得“优秀”评价', 15, HIDDEN, AUTO), ('本科月度卫生检查均获得“优秀”评价', 50, HIDDEN, AUTO)]), ('五育并举', [('首次报名书院课程', 1, DISPLAYED, AUTO), ('完成德育学分要求', 2, DISPLAYED, AUTO), ('完成智育学分要求', 2, DISPLAYED, AUTO), ('完成体育学分要求', 2, DISPLAYED, AUTO), ('完成美育学分要求', 2, DISPLAYED, AUTO), ('完成劳动教育学分要求', 2, DISPLAYED, AUTO), ('完成一半书院学分要求', 4, DISPLAYED, AUTO), ('完成全部书院学分要求', 5, DISPLAYED, AUTO), ('超额完成一半书院学分要求', 7, HIDDEN, AUTO), ('超额完成一倍书院学分要求', 10, HIDDEN, AUTO)]), ('志同道合', [('加入书院组织', 1, DISPLAYED, AUTO), ('参与书院俱乐部一半活动', 2, HIDDEN, AUTO), ('参与书院俱乐部全部活动', 5, HIDDEN, AUTO), ('成为书院小组负责人', 10, HIDDEN, AUTO), ('成为书院俱乐部负责人', 10, HIDDEN, AUTO), ('成为书院星级俱乐部负责人', 20, HIDDEN, AUTO), ('发起成立书院小组', 5, HIDDEN, AUTO)]), ('严于律己', [('当月没有扣除信用分', 0, DISPLAYED, AUTO), ('一学期没有扣除信用分', 2, HIDDEN, AUTO), ('一学年没有扣除信用分', 10, HIDDEN, AUTO), ('本科均没有扣除信用分', 20, HIDDEN, AUTO)]), ('元气满满', [('首次获得元气值', 0, DISPLAYED, AUTO), ('学期内获得10元气值', 0, DISPLAYED, AUTO), ('学期内获得30元气值', 0, HIDDEN, AUTO), ('学期内获得50元气值', 0, HIDDEN, AUTO), ('学期内获得100元气值', 0, HIDDEN, AUTO), ('首次消费元气值', 1, DISPLAYED, AUTO), ('学期内消费10元气值', 1, DISPLAYED, AUTO), ('学期内消费30元气值', 2, HIDDEN, AUTO), ('学期内消费50元气值', 5, HIDDEN, AUTO), ('学期内消费100元气值', 10, HIDDEN, AUTO)]), ('三五成群', [('加入宿舍群', 1, DISPLAYED, MANUAL), ('参与宿舍片区管理', 0, DISPLAYED, MANUAL), ('参与宿舍片区活动', 0, DISPLAYED, MANUAL)]), ('智慧生活', [('注册智慧书院', 2, DISPLAYED, AUTO), ('连续登录一周', 0, HIDDEN, AUTO), ('连续登录一学期', 20, HIDDEN, AUTO), ('连续登录一整年', 50, HIDDEN, AUTO), ('完成地下室预约', 1, DISPLAYED, AUTO), ('更新一次个人档案', 2, DISPLAYED, AUTO), ('编辑自己的学术地图', 10, DISPLAYED, AUTO), ('参与学术问答', 5, DISPLAYED, AUTO), ('使用一次反馈中心', 2, DISPLAYED, AUTO), ('使用一次元培书房查询', 2, DISPLAYED, AUTO)]), ('纪念成就', [('参与9月5日的团学联宣讲会', 0, DISPLAYED, MANUAL)]),] for achievement_type_name, achievement_list in achievement_info: try: achievement_type = AchievementType.objects.get( title=achievement_type_name) for achievement_name, reward_points, if_displayed, if_auto_trigger in achievement_list: Achievement.objects.update_or_create( name=achievement_name, description=achievement_name, # 默认重复一遍name achievement_type=achievement_type, hidden=not if_displayed, auto_trigger=if_auto_trigger, reward_points=reward_points ) except AchievementType.DoesNotExist: print('AchievementType %s does not exist' % achievement_type_name) continue