Esempio n. 1
0
def get_home_checklists():
    """
    获取首页的清单列表
    :return:
    """
    s = g.mysql_session
    raw_scene_id = KvConfig.get_value_of_key(
        s, KvConfig.KEY_HOME_CHECKLIST_SCENE_ID)
    checklists_res = []
    if raw_scene_id is None:
        return succeed(data=checklists_res)

    checklists = Checklist.get_list_by_scene(s, int(raw_scene_id))
    checklist_ids = [x.id for x in checklists]

    # 检索自己是否打卡的相关信息
    my_reviews_id_map = {}
    checklist_count_map = {}
    user = None
    if g.user:
        user = g.user
        my_reviews = ChecklistReview.get_today_list_of_user(s, user.id)
        my_reviews_id_map = {x.checklist_id: x for x in my_reviews}
        checklist_count_map = ChecklistReview.get_reviews_count_of_n_days_before(
            s, user.id, checklist_ids)

    for checklist in checklists:
        single_checklist_info = dict(
            id=checklist.id,
            description=checklist.description,
            checked_count=checklist_count_map.get(checklist.id, 0),
            checked=0,
        )
        if my_reviews_id_map.get(checklist.id):
            single_checklist_info["checked"] = 1
            review = my_reviews_id_map.get(checklist.id)
            last_review = dict(description=review.detail, )
            last_review["author_nickname"] = user.nickname
            single_checklist_info["last_review"] = last_review

        checklists_res.append(single_checklist_info)

    return succeed(data=checklists_res)