def _do_get_subjects_detail(history):
    """
    题目详情
    :param history: 会员游戏历史Model
    :return:
    """
    if history:
        answer_list = history.result
        if answer_list:
            subject_cid_list, subject_answer_dict = [], {}
            for answer in answer_list:
                if answer and answer.get('selected_option_cid') and answer.get(
                        'subject_cid'):
                    subject_cid_list.append(answer.get('subject_cid'))
                    subject_answer_dict[answer.get('subject_cid')] = answer
            if subject_cid_list:
                subject_list = Subject.sync_find(
                    dict(cid={'$in': subject_cid_list})).to_list(None)
                return subject_list, subject_answer_dict
    return [], {}
Пример #2
0
def _do_count_subjects_detail(ds: DockingStatistics, history_model):
    """
    统计题目详情
    :param ds: 统计数据Model
    :param history_model: 会员游戏历史Model
    :return:
    """
    if ds and history_model:
        answer_list = history_model.result
        if answer_list:
            subject_cid_list, subject_answer_dict = [], {}
            for answer in answer_list:
                if answer and answer.get('selected_option_cid') and answer.get(
                        'subject_cid'):
                    subject_cid_list.append(answer.get('subject_cid'))
                    subject_answer_dict[answer.get('subject_cid')] = answer
            if subject_cid_list:
                subject_list = Subject.sync_find(
                    dict(cid={'$in': subject_cid_list})).to_list(None)
                if subject_list:
                    for subject in subject_list:
                        answer = subject_answer_dict.get(subject.cid)
                        if answer:
                            if ds.subjects_detail is None:
                                ds.subjects_detail = {}
                            if ds.subjects_detail.get(subject.code) is None:
                                ds.subjects_detail[subject.code] = {}
                            if not ds.subjects_detail[subject.code].get(
                                    'total'):
                                ds.subjects_detail[subject.code]['total'] = 0
                            if not ds.subjects_detail[subject.code].get(
                                    'correct'):
                                ds.subjects_detail[subject.code]['correct'] = 0
                            ds.subjects_detail[subject.code]['total'] += 1
                            if answer.get('true_answer'):
                                ds.subjects_detail[
                                    subject.code]['correct'] += 1
                return subject_list, subject_answer_dict
    return [], {}