Exemple #1
0
 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 '永久有效'
Exemple #2
0
 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 '',
         }
Exemple #3
0
 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
     }
Exemple #4
0
 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)
     }
Exemple #5
0
 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)
Exemple #6
0
 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
Exemple #7
0
    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)
Exemple #8
0
 def get_create_time(self, obj):
     return utils.datetime_to_str(obj.create_time)
Exemple #9
0
 def get_working_time(self, obj):
     if obj.working_time:
         return utils.datetime_to_str(obj.working_time)
Exemple #10
0
 def get_start_time(self, obj):
     if obj.start_time:
         return utils.datetime_to_str(obj.start_time)
Exemple #11
0
 def get_teacher_start_time(self, obj):
     actual_start = obj.actual_start_time
     if actual_start:
         return utils.datetime_to_str(actual_start)
Exemple #12
0
 def get_teacher_end_time(self, obj):
     actual_end = obj.actual_end_time
     if actual_end:
         return utils.datetime_to_str(actual_end)
Exemple #13
0
 def get_enter_time(self, obj):
     if obj.enter_time:
         return utils.datetime_to_str(obj.enter_time)
Exemple #14
0
 def get_leave_time(self, obj):
     if obj.leave_time:
         return utils.datetime_to_str(obj.leave_time)
Exemple #15
0
 def get_success_time(self, obj):
     if obj.success_time:
         return utils.datetime_to_str(obj.success_time)
Exemple #16
0
 def get_birthday(self, obj):
     if obj.birthday:
         return utils.datetime_to_str(obj.birthday)
Exemple #17
0
 def get_register_date(self, obj):
     if obj.create_time:
         return utils.datetime_to_str(obj.create_time)
Exemple #18
0
 def get_date_joined(self, obj):
     if obj.date_joined:
         return utils.datetime_to_str(obj.date_joined)
Exemple #19
0
 def get_last_login(self, obj):
     if obj.last_login:
         return utils.datetime_to_str(obj.last_login)