import json from django.core.management.base import BaseCommand from university.models import OnlineExam, UserOnlineExam from pingcap_cookie_sso.models import SingleSignOnRecord def format_passed(is_passed): if is_passed: return 'Y' return 'N' class Command(BaseCommand): def handle(self, *args, **options): data = {'c40b176c-442c-11ea-80ce-1866da9ce92b': {'pcta': {'part_0_score': 11, 'part_1_score': 7, 'part_2_score': 9, 'total_score': 27, 'percent': 45.0, 'is_passed': False}, 'pctp': None, 'name': '李启航', 'chinese_id': '220723199512151019'}, '4fc181fc-f32c-11ea-976d-1866da9ce92b': {'pcta': {'part_0_score': 14, 'part_1_score': 7, 'part_2_score': 10, 'total_score': 31, 'percent': 51.67, 'is_passed': False}, 'pctp': None, 'name': '李旭锋', 'chinese_id': '14262119940316413X'}, '01879106-6dd1-11ea-b03f-1866da9ce92b': {'pcta': {'part_0_score': 16, 'part_1_score': 6, 'part_2_score': 9, 'total_score': 31, 'percent': 51.67, 'is_passed': False}, 'pctp': None, 'name': '樊猛', 'chinese_id': '36042419870202176'}, '9cbec714-2873-11ea-933c-1866da9ce92b': {'pcta': {'part_0_score': 8, 'part_1_score': 9, 'part_2_score': 10, 'total_score': 27, 'percent': 45.0, 'is_passed': False}, 'pctp': None, 'name': '陈加持', 'chinese_id': '350425198702253316'}, 'e4c6582a-21fb-11ea-8a6d-1866da9ce92b': {'pcta': {'part_0_score': 17, 'part_1_score': 9, 'part_2_score': 15, 'total_score': 41, 'percent': 68.33, 'is_passed': True}, 'pctp': None, 'name': '王世艺', 'chinese_id': '110102198909041112'}, '82bf4452-303d-11ea-847a-1866da9ce92b': {'pcta': {'part_0_score': 14, 'part_1_score': 10, 'part_2_score': 8, 'total_score': 32, 'percent': 53.33, 'is_passed': False}, 'pctp': None, 'name': '马学韬', 'chinese_id': '131121199302190259'}, 'fe3da58e-44e6-11ea-922c-1866da9ce92b': {'pcta': {'part_0_score': 8, 'part_1_score': 3, 'part_2_score': 9, 'total_score': 20, 'percent': 33.33, 'is_passed': False}, 'pctp': None, 'name': '田朋', 'chinese_id': '239005199407251017'}, '58e5b896-d27c-11ea-b0ec-1866da9ce92b': {'pcta': {'part_0_score': 15, 'part_1_score': 8, 'part_2_score': 10, 'total_score': 33, 'percent': 55.0, 'is_passed': False}, 'pctp': None, 'name': '舒正英', 'chinese_id': '500222199101308513'}, '35a8b8c8-a992-11ea-907f-1866da9ce92b': {'pcta': {'part_0_score': 15, 'part_1_score': 11, 'part_2_score': 15, 'total_score': 41, 'percent': 68.33, 'is_passed': True}, 'pctp': None, 'name': '吴剑锋', 'chinese_id': '310115197709244411'}, 'eaf7cd52-8a1d-11ea-8619-1866da9ce92b': {'pcta': {'part_0_score': 14, 'part_1_score': 10, 'part_2_score': 13, 'total_score': 37, 'percent': 61.67, 'is_passed': True}, 'pctp': {'part_0_score': 18, 'part_1_score': 16, 'part_2_score': 13, 'total_score': 47, 'percent': 67.14, 'is_passed': True}, 'name': '李正洋', 'chinese_id': '342401199301063216'}, 'b971951e-5e95-11ea-8e8c-1866da9ce92b': {'pcta': {'part_0_score': 15, 'part_1_score': 2, 'part_2_score': 14, 'total_score': 31, 'percent': 51.67, 'is_passed': False}, 'pctp': {'part_0_score': 15, 'part_1_score': 10, 'part_2_score': 6, 'total_score': 31, 'percent': 44.29, 'is_passed': False}, 'name': '梁梓锋', 'chinese_id': '440421199501108156'}, 'bbad346c-c666-11ea-9541-1866da9ce92b': {'pcta': {'part_0_score': 16, 'part_1_score': 9, 'part_2_score': 10, 'total_score': 35, 'percent': 58.33, 'is_passed': False}, 'pctp': None, 'name': '李达', 'chinese_id': '431223199106266817'}, 'e425a282-9f59-11ea-b9ac-1866da9ce92b': {'pcta': None, 'pctp': {'part_0_score': 17, 'part_1_score': 12, 'part_2_score': 9, 'total_score': 38, 'percent': 54.29, 'is_passed': False}, 'name': '李云龙', 'chinese_id': '362334198910081234'}, 'd98a37a0-456a-11ea-9e3e-1866da9ce92b': {'pcta': None, 'pctp': {'part_0_score': 18, 'part_1_score': 6, 'part_2_score': 5, 'total_score': 29, 'percent': 41.43, 'is_passed': False}, 'name': '龚俊楷', 'chinese_id': '45092219930318097X'}, '0f81630e-9cc0-11ea-9099-1866da9ce92b': {'pcta': {'part_0_score': 12, 'part_1_score': 5, 'part_2_score': 10, 'total_score': 27, 'percent': 45.0, 'is_passed': False}, 'pctp': None, 'name': '陈晴阳', 'chinese_id': '411381198805252618'}, 'dc2f4638-f174-11ea-a9ac-1866da9ce92b': {'pcta': {'part_0_score': 11, 'part_1_score': 5, 'part_2_score': 10, 'total_score': 26, 'percent': 43.33, 'is_passed': False}, 'pctp': None, 'name': '丁海亚', 'chinese_id': '412724199801051835'}, '0fc9c440-e749-11ea-b31d-1866da9ce92b': {'pcta': {'part_0_score': 11, 'part_1_score': 7, 'part_2_score': 12, 'total_score': 30, 'percent': 50.0, 'is_passed': False}, 'pctp': None, 'name': '张皓', 'chinese_id': '142233199010156319'}, 'b1b39b4a-6f63-11ea-b3a1-1866da9ce92b': {'pcta': {'part_0_score': 13, 'part_1_score': 12, 'part_2_score': 10, 'total_score': 35, 'percent': 58.33, 'is_passed': False}, 'pctp': None, 'name': '罗霞', 'chinese_id': '430181199011293318'}, '60f3b7bc-dc78-11ea-8f55-1866da9ce92b': {'pcta': {'part_0_score': 11, 'part_1_score': 4, 'part_2_score': 8, 'total_score': 23, 'percent': 38.33, 'is_passed': False}, 'pctp': None, 'name': '沈智勇', 'chinese_id': '520181199506160017'}, 'ba18433e-f32b-11ea-a38d-1866da9ce92b': {'pcta': {'part_0_score': 13, 'part_1_score': 4, 'part_2_score': 12, 'total_score': 29, 'percent': 48.33, 'is_passed': False}, 'pctp': None, 'name': '代海鹏', 'chinese_id': '14243019901030001X'}, '652b0b4c-4e10-11ea-be99-1866da9ce92b': {'pcta': {'part_0_score': 12, 'part_1_score': 2, 'part_2_score': 6, 'total_score': 20, 'percent': 33.33, 'is_passed': False}, 'pctp': None, 'name': '李石岩', 'chinese_id': '130182198503040510'}, '746ea010-e752-11ea-bcd9-1866da9ce92b': {'pcta': {'part_0_score': 12, 'part_1_score': 7, 'part_2_score': 10, 'total_score': 29, 'percent': 48.33, 'is_passed': False}, 'pctp': None, 'name': '冼立志', 'chinese_id': '441621199510063019'}, '42d62fc0-e05c-11ea-aded-1866da9ce92b': {'pcta': {'part_0_score': 12, 'part_1_score': 4, 'part_2_score': 5, 'total_score': 21, 'percent': 35.0, 'is_passed': False}, 'pctp': None, 'name': '申海龙', 'chinese_id': '370828198802124014'}, 'f53412fa-1126-11ea-8a9c-1866da9ce92b': {'pcta': {'part_0_score': 11, 'part_1_score': 6, 'part_2_score': 8, 'total_score': 25, 'percent': 41.67, 'is_passed': False}, 'pctp': None, 'name': '曹瑞', 'chinese_id': '220122199204130751'}} with open('exam_result.csv', 'w') as f: f.write('姓名,PCTA-单选,PCTA-多选,PCTA-不定项,PCTA-小计,PCTA-百分比,PCTA-结果,PCTP-单选,PCTP-多选,PCTP-不定项,PCTP-小计,PCTP-百分比,PCTP-结果\n') for uid, d in data.items(): line = [ d['name'], d['pcta']['part_0_score'] if d['pcta'] else '/', d['pcta']['part_1_score'] if d['pcta'] else '/', d['pcta']['part_2_score'] if d['pcta'] else '/', d['pcta']['total_score'] if d['pcta'] else '/', '{}%'.format(d['pcta']['percent']) if d['pcta'] else '/', format_passed(d['pcta']['is_passed']) if d['pcta'] else '/', d['pctp']['part_0_score'] if d['pctp'] else '/', d['pctp']['part_1_score'] if d['pctp'] else '/', d['pctp']['part_2_score'] if d['pctp'] else '/', d['pctp']['total_score'] if d['pctp'] else '/', '{}%'.format(d['pctp']['percent']) if d['pctp'] else '/', format_passed(d['pctp']['is_passed']) if d['pctp'] else '/', ] f.write(','.join(map(lambda x: str(x), line)) + '\n')