예제 #1
0
def video_token(room_id, expires_in=0):

    timestamp = time.time()

    sign_str = 'expires_in={expires_in}&partner_id={partner_id}&room_id={room_id}&timestamp={timestamp}&partner_key={partner_key}'.format(
        expires_in=expires_in,
        partner_id=settings.PARTNER_ID,
        room_id=room_id,
        timestamp=timestamp,
        partner_key=settings.PARTNER_KEY)

    sign = md5_str(sign_str)

    url = 'https://{}.at.baijiayun.com/openapi/playback/getPlayerToken'.format(
        settings.BAIJIAYUN_DOMAIN)

    params = {
        'partner_id': settings.PARTNER_ID,
        'room_id': room_id,
        'expires_in': expires_in,
        'timestamp': timestamp,
        'sign': sign
    }

    result = utils.fetch_post_api(url, params)

    if result:
        token = result.get('data', {}).get('token')
        return token
    return None
예제 #2
0
    def change_appointment_tutor(self, request):
        start_time = request.data.get('start_time')
        tutor_user_id = request.data.get('tutor_user_id')
        absent_tutor_user_id = request.data.get('absent_tutor_user_id')

        change_appointment_tutor_url = 'http://' + settings.JAVA_DOMAIN + settings.CHANGE_APPOINTMENTED_TUTOR.format(
            tutor_user_id=tutor_user_id,
            absent_tutor_user_id=absent_tutor_user_id,
            start_time=start_time)

        result = utils.fetch_post_api(change_appointment_tutor_url)

        if result.get('code') != 200:
            return JsonResponse(code=1,
                                msg='{}'.format(result.get('message', '')),
                                status=status.HTTP_200_OK)

        try:
            user = request.session.get('user')
            logger.debug(
                'change appointment tutor , user={}, tutor_user_id={}, absent_tutor_user_id={}'
                .format(user.get('id'), tutor_user_id,
                        change_appointment_tutor_url))
        except Exception as e:
            logger.debug('change appointment tutor fail, error='.format(e))

        return JsonResponse(code=0,
                            msg='{}'.format(result.get('message', '')),
                            status=status.HTTP_200_OK)
예제 #3
0
    def change_tutor(self, request):

        class_timetable_ids = request.data.get('class_timetable_ids')

        tutor_user_id = request.data.get('tutor_user_id')

        class_timetables = ScheduleClassTimeTable.objects.filter(
            id__in=class_timetable_ids,
            status=ScheduleClassTimeTable.SUCCESS_APPOINTMENT).all()

        end_times = []
        start_times = []
        class_id = None
        class_type_id = None

        user = request.session.get('user')

        for class_timetable in class_timetables:
            start_times.append(class_timetable.start_time)
            end_times.append(class_timetable.end_time)
            class_id = class_timetable.class_field_id
            class_type_id = class_timetable.class_field.class_type_id

        if start_times:
            change_tutor_url = 'http://' + settings.JAVA_DOMAIN + settings.SCHEDULE_CHANGE_TUTOR

            data = {
                "classId": class_id,
                "classTypeId": class_type_id,
                "endTimes": end_times,
                "startTimes": start_times,
                "tutorUserId": tutor_user_id
            }

            result = utils.fetch_post_api(change_tutor_url,
                                          data,
                                          user_id=user.get('id'))

            if result.get('code') != 200:
                return JsonResponse(code=1,
                                    msg='更换老师失败, {}'.format(
                                        result.get('message', '')),
                                    status=status.HTTP_200_OK)

        for class_timetable in class_timetables:
            virtual_class = VirtualclassInfo.objects.filter(
                class_field_id=class_timetable.class_field_id,
                start_time=class_timetable.start_time,
                status=VirtualclassInfo.NOT_START).first()
            class_timetable.virtual_class = virtual_class
            class_timetable.status = ScheduleClassTimeTable.SUCCESS_APPOINTMENT
            class_timetable.appoint_user_id = user.get('id')
            class_timetable.appoint_user_name = user.get('realname')
            class_timetable.save()
        return JsonResponse(code=0, msg='success', status=status.HTTP_200_OK)
예제 #4
0
    def subscribe(self, request):

        class_timetable_ids = request.data.get('class_timetable_ids')
        tutor_user_id = request.data.get('tutor_user_id')

        class_timetables = ScheduleClassTimeTable.objects.filter(
            id__in=class_timetable_ids).all()

        start_times, end_times = [], []
        class_id = None
        class_type_id = None
        for class_timetable in class_timetables:
            start_times.append(class_timetable.start_time)
            end_times.append(class_timetable.end_time)
            class_id = class_timetable.class_field_id
            class_type_id = class_timetable.class_field.class_type_id

        subscribe_url = 'http://' + settings.JAVA_DOMAIN + settings.SCHEDULE_SUBSCRIBE

        user = request.session.get('user')

        data = {
            "classId": class_id,
            "classTypeId": class_type_id,
            "endTimes": end_times,
            "opType": 1,  # 1:预约时间;2:取消预约
            "startTimes": start_times,
            "tutorUserId": tutor_user_id,
            "opUserId": user.get('id')
        }

        result = utils.fetch_post_api(subscribe_url,
                                      data,
                                      user_id=user.get('id'))

        if result.get('code') != 200:
            return JsonResponse(code=1,
                                msg='约课失败, {}'.format(result.get(
                                    'message', '')),
                                data=result.get('data', []),
                                status=status.HTTP_200_OK)

        for class_timetable in class_timetables:
            virtual_class = VirtualclassInfo.objects.filter(
                class_field_id=class_timetable.class_field_id,
                start_time=class_timetable.start_time,
                status=VirtualclassInfo.NOT_START).first()
            class_timetable.virtual_class = virtual_class
            class_timetable.status = ScheduleClassTimeTable.SUCCESS_APPOINTMENT
            class_timetable.appoint_user_id = user.get('id')
            class_timetable.appoint_user_name = user.get('realname')
            class_timetable.save()

        return JsonResponse(code=0, msg='success', status=status.HTTP_200_OK)
예제 #5
0
    def cancle_timetable(self, request):

        class_timetable_ids = request.data.get('class_timetable_ids')

        class_time_tables = ScheduleClassTimeTable.objects.filter(
            id__in=class_timetable_ids).all()

        start_times, end_times = [], []
        class_id = None
        class_type_id = None

        user = request.session.get('user')

        for class_timetable in class_time_tables:

            if class_timetable.status == ScheduleClassTimeTable.SUCCESS_APPOINTMENT:

                start_times.append(class_timetable.start_time)
                end_times.append(class_timetable.end_time)
                class_id = class_timetable.class_field_id
                class_type_id = class_timetable.class_field.class_type_id

        if start_times:
            cancel_url = 'http://' + settings.JAVA_DOMAIN + settings.SCHEDULE_SUBSCRIBE

            data = {
                "classId": class_id,
                "classTypeId": class_type_id,
                "endTimes": end_times,
                "opType": 2,  # 1:预约时间;2:取消预约
                "startTimes": start_times,
                "tutorUserId": 0,
                "opUserId": user.get('id')
            }

            result = utils.fetch_post_api(cancel_url,
                                          data,
                                          user_id=user.get('id'))

            if result.get('code') != 200:
                return JsonResponse(code=1,
                                    msg='取消课程失败, {}'.format(
                                        result.get('message', '')),
                                    data=result.get('data', []),
                                    status=status.HTTP_200_OK)

        for class_timetable in class_time_tables:
            class_timetable.appoint_user_id = user.get('id')
            class_timetable.appoint_user_name = user.get('realname')
            class_timetable.status = ScheduleClassTimeTable.CANCELD_PUBLISHED
            class_timetable.save()

        return JsonResponse(code=0, msg='success', status=status.HTTP_200_OK)
예제 #6
0
 def add_class_member(self, request, pk):
     student_id = request.data.get('student_id')
     if not student_id:
         return JsonResponse(code=1, msg='参数缺失', status=status.HTTP_200_OK)
     data = {"classId": pk, "userId": student_id}
     url = 'http://' + settings.JAVA_DOMAIN + settings.STUDENT_ADD_CLASS
     result = utils.fetch_post_api(url, data)
     if result.get('code') != 200:
         return JsonResponse(code=1,
                             msg='添加失败,{}'.format(result.get('message',
                                                             '')),
                             data=result.get('data', []),
                             status=status.HTTP_200_OK)
     try:
         user = request.session.get('user')
         logger.debug('{} 添加班级成员, class_id: {}, student_id: {}'.format(
             user.get('id'), pk, student_id))
     except Exception as e:
         pass
     return JsonResponse(code=0, msg='success', status=status.HTTP_200_OK)
예제 #7
0
    def add_student_batch(self, request):

        data_textarea = request.data.get('data_textarea')
        class_no = request.data.get('class_no')

        datas = data_textarea.split('\n')
        post_data = []
        fail_data = []
        for data in datas:
            try:
                '''账号,学生名字,学生性别,学生生日,课程顾问,学管'''
                student_data = data.split(',')
                adviser_user_name = student_data[4].strip()
                adviser_user = UserInfo.objects.filter(
                    realname=adviser_user_name).first()
                xg_user_name = student_data[5].strip()
                xg_user = UserInfo.objects.filter(
                    realname=xg_user_name).first()
                gender = student_data[2].strip()
                if gender == '男孩':
                    student_gender = 1
                elif gender == '女孩':
                    student_gender = 2
                else:
                    student_gender = 0
                age = student_data[3].strip()  # 年龄 换算成生日
                now_time = timezone.now()
                birthday = now_time.replace(now_time.year - int(age))
                birthday = birthday.strftime('%Y-%m-%d')
                data = {
                    "adviserUserName": "",
                    "adviserUserPhone": "",
                    "childBirthday": birthday + 'T00:00:00.000Z',
                    "childGender": student_gender,
                    "childRealName": student_data[1].strip(),
                    "classNo": class_no,
                    "parentIdentify": student_data[0].strip(),
                    "xgUserName": "",
                    "xgUserPhone": ""
                }
                if adviser_user:
                    data['adviserUserId'] = adviser_user.id
                    data['adviserUserName'] = adviser_user.realname
                    data['adviserUserPhone'] = adviser_user.phone
                if xg_user:
                    data['xgUserId'] = xg_user.id
                    data['xgUserName'] = xg_user.realname
                    data['xgUserPhone'] = xg_user.phone
                post_data.append(data)
            except Exception as e:
                logger.debug('add_student_batch fail, error={}'.format(e))
                fail_data.append(data)
        logger.debug('add_student_batch data={}'.format(post_data))
        student_join_class_url = 'http://' + settings.JAVA_DOMAIN + settings.STUDENT_JOIN_CLASS

        return_result = utils.fetch_post_api(student_join_class_url, post_data)

        result = {'fail_data': fail_data, 'return_data': return_result}

        return JsonResponse(code=0,
                            msg='success',
                            data=result,
                            status=status.HTTP_200_OK)