def get_subjects_summary(self, parent, params):
subjects_list = []
if settings.TESTING:
return JsonResponse({'results': subjects_list})
purchased_subjects = []
# get subject from order
ordered_subjects = models.Order.objects.filter(
parent=parent, status=models.Order.PAID).values(
'subject', 'grade', 'created_at').order_by(
'-created_at')
for tmp_order in ordered_subjects:
# only support math presently
tmp_subject = models.Subject.objects.get(id=tmp_order['subject'])
s_name = tmp_subject.name
if s_name in purchased_subjects:
continue
purchased_subjects.append(s_name)
if s_name in klx.KLX_REPORT_SUBJECTS:
s_name_en = klx.klx_subject_name(s_name)
url = klx.KLX_STUDY_URL_FMT.format(subject=s_name_en)
subject_data = {
'subject_id': tmp_subject.id, 'supported': True,
'purchased': True, 'grade_id': tmp_order['grade']}
# ???????????
subject_data.update(self._get_total_nums(url, params))
subjects_list.append(subject_data)
else:
subjects_list.append({
'subject_id': tmp_subject.id,
'purchased': True,
'grade_id': tmp_order['grade'],
'supported': False,
})
# subjects supported, but user did not purchase
should_buy_subjects = [b for b in klx.KLX_REPORT_SUBJECTS
if b not in purchased_subjects]
if should_buy_subjects:
to_buy_subjects = models.Subject.objects.filter(
name__in=should_buy_subjects)
for s in to_buy_subjects:
subjects_list.append({
'subject_id': s.id,
'supported': True,
'purchased': False,
})
settings.DEBUG and logger.debug(json.dumps(subjects_list))
return JsonResponse({'results': subjects_list})
评论列表
文章目录