def get_valid_date(self, obj): if obj.recharge_type == RechargeOrder.PACKAGE: buy_package = BuyPackage.objects.filter(order_no=obj.order_no) if buy_package: return utils.datetime_to_str(buy_package.valid_start) + '~' + utils.datetime_to_str(buy_package.valid_end) else: return '永久有效'
def get_examine_result(self, obj): examine_result = VirtualclassFirstReportAudit.objects.filter( first_report_id=obj.id).first() if examine_result: user_infos = self.context.get('user_infos', {}) user_info = user_infos.get(examine_result.audit_user_id) return { 'examine_time': utils.datetime_to_str(examine_result.create_time), 'examiner': user_info.realname if user_info else '', }
def get_recharge_order(self, obj): if not obj.order_no: return None recharge_order = RechargeOrder.objects.filter( order_no=obj.order_no, status=RechargeOrder.PAID).first() if not recharge_order: return None return { 'recharge_time': utils.datetime_to_str(recharge_order.update_time), 'currency': recharge_order.currency, 'recharge_amount': recharge_order.recharge_amount, 'bonus_amount': recharge_order.incentive_amount }
def get_last_info(self, obj): last_vc = VirtualclassInfo.objects.filter( virtual_class_member__student_user_id=obj.id, status=VirtualclassInfo.FINISH_NOMAL).select_related( 'tutor_user').order_by('-start_time').only( 'id', 'start_time', 'tutor_user__username', 'tutor_user__real_name', 'tutor_user__identity_name').first() if not last_vc: return None return { 'last_teacher': last_vc.tutor_user.username, 'last_teacher_real_name': last_vc.tutor_user.real_name, 'last_teacher_identity_name': last_vc.tutor_user.identity_name, 'last_attend_time': utils.datetime_to_str(last_vc.start_time) }
def get_virtualclass(self, obj): vc = VirtualclassInfo.objects.filter(id=obj.reference).first() if vc: scheduled_time = vc.start_time class_type = vc.class_type.name course_lesson = vc.lesson course_info = { 'edition_name': course_lesson.course.course_edition.edition_name, 'course_level': course_lesson.course.course_level, 'lesson_no': course_lesson.lesson_no } teacher_name = vc.tutor_user.__str__() return dict(scheduled_time=utils.datetime_to_str(scheduled_time), class_type=class_type, course_info=course_info, teacher_name=teacher_name, remark=None)
def get_examine_result(self, obj): examine_results = VirtualclassFirstReportAudit.objects.filter( first_report_id=obj.id).all() result = [] for examine_result in examine_results: user_info = UserInfo.objects.filter( id=examine_result.audit_user_id).first() result.append({ 'report_result_id': examine_result.id, 'examine_time': utils.datetime_to_str(examine_result.create_time), 'examiner': user_info.realname if user_info else '', 'remark': examine_result.remark, 'status': examine_result.status }) return result
def virtualclass_exception(self, request, pk): vc = VirtualclassInfo.objects.filter(id=pk).first() if not vc: return JsonResponse(code=1, msg='数据错误, 未查询到virtualclass', status=status.HTTP_200_OK) now_time = timezone.now() if (vc.start_time > now_time - timedelta(hours=2) and vc.status == VirtualclassInfo.NOT_START) \ or vc.status == VirtualclassInfo.STARTED: return JsonResponse(code=1, msg='课堂未结束,不能审核', status=status.HTTP_200_OK) if vc.reason is not None and vc.reason == VirtualclassInfo.NORMAL and vc.status == VirtualclassInfo.FINISH_NOMAL: return JsonResponse(code=1, msg='该课堂正常结束', status=status.HTTP_200_OK) vc_exception_result = VirtualclassException.objects.filter( virtual_class_id=pk).first() if not vc_exception_result: data = dict( tag=0, # 未审核 submitter=vc.tutor_user.__str__(), submit_time=utils.datetime_to_str(vc.update_time) if vc.update_time else None, end_reason=vc.reason if vc.reason else 21, end_reason_description=vc.remark) return JsonResponse(code=0, msg='success', data=data, status=status.HTTP_200_OK) student_amount = 0 teacher_amount = 0 account_balance_change = BalanceChange.objects.filter( reason__in=( BalanceChange.ABSENCE_PENALTY, # 学生缺席罚金 BalanceChange.NO_SHOW_COMPENSATION, # 导师不出席对学生的补偿 BalanceChange.ABSENCE_COMPENSATION, # 学生缺席老师奖励 BalanceChange.NO_SHOW_PENALTY, # 老师缺席罚金 ), reference=vc.id).all() for account in account_balance_change: if account.reason == BalanceChange.ABSENCE_PENALTY: student_amount = account.amount elif account.reason == BalanceChange.NO_SHOW_COMPENSATION: student_amount = account.amount elif account.reason == BalanceChange.ABSENCE_COMPENSATION: teacher_amount = account.amount elif account.reason == BalanceChange.NO_SHOW_PENALTY: teacher_amount = account.amount exchange = ExchangeRate.objects.filter( currency='CNY', valid_start__lt=now_time, valid_end__gte=now_time).first() data = dict( tag=1, # 已审核 submitter=vc.tutor_user.__str__(), submit_time=utils.datetime_to_str(vc.update_time) if vc.update_time else None, end_reason=vc.reason, end_reason_description=vc.remark, check_result=vc.get_reason_display(), check_description=vc_exception_result.description if vc_exception_result else '系统审核', check_code=vc_exception_result.result if vc_exception_result else vc.reason, student_amount=abs(student_amount) * exchange.rate, teacher_amount=abs(teacher_amount) * exchange.rate, check_user=vc_exception_result.cms_user.realname if vc_exception_result else '系统审核', check_time=utils.datetime_to_str(vc.update_time)) return JsonResponse(code=0, msg='success', data=data, status=status.HTTP_200_OK)
def get_create_time(self, obj): return utils.datetime_to_str(obj.create_time)
def get_working_time(self, obj): if obj.working_time: return utils.datetime_to_str(obj.working_time)
def get_start_time(self, obj): if obj.start_time: return utils.datetime_to_str(obj.start_time)
def get_teacher_start_time(self, obj): actual_start = obj.actual_start_time if actual_start: return utils.datetime_to_str(actual_start)
def get_teacher_end_time(self, obj): actual_end = obj.actual_end_time if actual_end: return utils.datetime_to_str(actual_end)
def get_enter_time(self, obj): if obj.enter_time: return utils.datetime_to_str(obj.enter_time)
def get_leave_time(self, obj): if obj.leave_time: return utils.datetime_to_str(obj.leave_time)
def get_success_time(self, obj): if obj.success_time: return utils.datetime_to_str(obj.success_time)
def get_birthday(self, obj): if obj.birthday: return utils.datetime_to_str(obj.birthday)
def get_register_date(self, obj): if obj.create_time: return utils.datetime_to_str(obj.create_time)
def get_date_joined(self, obj): if obj.date_joined: return utils.datetime_to_str(obj.date_joined)
def get_last_login(self, obj): if obj.last_login: return utils.datetime_to_str(obj.last_login)