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}×tamp={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
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)
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)
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)
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)
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)
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)