Exemplo n.º 1
0
 def post(self, request, **_):
     """上传文件
     """
     _ = self
     client_type = request.data.get('mode', 'wx')
     if client_type == 'wx':  # WeChat client
         f_mem = request.data.get('file')
         f_name = '{}.jpg'.format(uuid.uuid4().hex)
         fn = fc.save(f_name, f_mem)
         return DictResponse(r=0, data={'url': fc.url(fn)})
     else:  # todo browser client  支持多文件上传
         pass
Exemplo n.º 2
0
    def get(self, request, **_):
        """获取是否已录入人像数据

        :return:  返回值分两种情况
        1. 用户不存在已录入的人脸数据
            {'r': 1,
             'data': ''
             'errmsg': '未上传人像数据'
            }
        2. 用户存在已录入的人脸数据
            {'r': 0,
             'errmsg': ''
             'data': (FeatureForSignIn)obj.face_token  # 人脸唯一标识
            }
        """
        _ = self
        user = request.user
        face_record = mc.QueryFeatureForSignInHelper.query_face_record_by_user(
            user)
        if not face_record:
            return DictResponse(errmsg='未上传人像数据')
        return DictResponse(r=0, data=face_record.face_token)
Exemplo n.º 3
0
 def get(self, request, **_):
     """获取我创建/我听的的班课集合
     type: create
     type: listen
     """
     try:
         user = request.user
         teaching_lessons = self.info_serializer(
             user.teaching_lessons.order_by('-create_time').all(),
             many=True).data
         listening_lessons = self.info_serializer(
             user.listening_lessons.order_by('-create_time').all(),
             many=True).data
     except Exception as e:
         _logger.warn(
             'failed to get information of lessons, error:{}'.format(e),
             exc_info=True)
         return DictResponse(errmsg='查询班课失败')
     else:
         data = {
             'create': teaching_lessons,
             'listen': listening_lessons,
         }
         return DictResponse(r=0, data=data)
Exemplo n.º 4
0
    def post(self, request, **_):
        """新建或更新人像数据

        :return:
        1. 录入人脸数据失败
            {'r': 1,
             'errmsg': '未上传人像数据'
            }
        2. 成功录入人脸数据
            {'r': 0,
             'errmsg': (FeatureForSignIn)obj.face_token  # 人脸唯一标识
            }
        """
        _ = self
        user = request.user
        serializer = serializers.FeatureForSignInSerializer(data=request.data)
        if not serializer.is_valid():
            _logger.warning(
                'face-data for [UserProfile:{}]: serializer-data is invalid.'.
                format(user.nickName))
            return DictResponse(errmsg='人像数据录入失败')

        face_record = mc.QueryFeatureForSignInHelper.query_face_record_by_user(
            user)
        face_data_dict = serializer.validated_data
        if face_record:
            serializer.update(face_record, face_data_dict)
        else:
            new_face_record = models.FeatureForSignIn(user=user,
                                                      **face_data_dict)
            new_face_record.save()
        _logger.info(
            'flush the face-data of [UserProfile:{}] to db successfully..'.
            format(user.nickName))
        ret_info = {'face_token': face_data_dict.get('face_token', '')}
        return DictResponse(r=0, errmsg='人脸录入成功', data=ret_info)
Exemplo n.º 5
0
    def get(self, request, **_):
        """生成班课码
        """
        _ = self
        _ = request
        _list = list(string.ascii_uppercase + string.digits)

        for _ in range(gdata.LESSON_CODE_NUM):

            while 1:
                cur_code = ''.join(random.sample(_list, gdata.LESSON_CODE_LEN))
                code_obj = models.LessonCode.objects.filter(
                    code=cur_code).first()
                if not code_obj:
                    new_code_obj = models.LessonCode(code=cur_code)
                    new_code_obj.save()
                    break

        return DictResponse(r=0, data='生成班课码数据成功...')
Exemplo n.º 6
0
    def get(self, request, **_):
        """获取所有的课程分类

        :return:

        [
            {'code': 学科分类代码, 'desc': 学科名}
            {'code': 学科分类代码, 'desc': 学科名}
            {'code': 学科分类代码, 'desc': 学科名}
            {'code': 学科分类代码, 'desc': 学科名}
            .....
        ]
        """
        _ = self
        _ = request
        ret_data = [
            dict(code=code, desc=desc)
            for code, desc in gdata.LESSON_CLS_CHOICE
        ]
        return DictResponse({'r': 0, 'data': ret_data})
Exemplo n.º 7
0
    def get(self, request, **_):
        """
        :return:
        {
            'lesson_info': {
                ...
            }

            'resource_num': 课堂资源数
            'questions_num': 答疑区问题数(已解决数/总数)
            'notice_num': 通知数量
            'teach_schedulers': {
                'all': [
                    {},
                    {},
                    {}
                ],
                'ing': [
                    {},
                    {},
                    {},
                ]
                'to': [
                    {},
                    {},
                    {},
                ],
                'up': [
                    {},
                    {}
                ]
            }
        }
        """
        _ = self
        _type = request.query_params.get('type', 0)  # 0-教师身份, 1-学生身份
        lesson_code = request.query_params.get('lesson_code', '')
        lesson = models.Lesson.objects.filter(lesson_code=lesson_code).first()
        lesson_info = serializers.LessonInfoSerializer(lesson, many=False).data

        # todo 班课首页

        lesson_index_info = {
            'lesson_data': lesson_info,
            'resource_num': 0,
            'stu_num': lesson.stu_num,
            'questions_num': '0/0',
            'notice_num': 0,
            'teach_schedulers': {
                'track_all_list': [
                    {
                        'start_time': '2013-01-23 23:00:23',
                        'end_time': '23:20:23',
                        'detail': '测试一下',
                        'status': 0,  # 0 - 已结束,1 - 进行中,2 - 待开始
                        'code': '899b20c069d846e3b3980989dc3925b5',
                    },
                    {
                        'start_time': '2013-01-23 23:00:23',
                        'end_time': '',
                        'detail': '测试一下',
                        'status': 1,  # 0 - 已结束,1 - 进行中,2 - 待开始
                        'code': '899b20c069d846e3b3980989dc3925b5',
                    },
                    {
                        'start_time': '2013-01-23 23:00:23',
                        'end_time': '23:20:23',
                        'detail': '测试一下',
                        'status': 0,  # 0 - 已结束,1 - 进行中,2 - 待开始
                        'code': '899b20c069d846e3b3980989dc3925b5',
                    },
                    {
                        'start_time': '2013-01-23 23:00:23',
                        'end_time': '23:20:23',
                        'detail': '测试一下',
                        'status': 2,  # 0 - 已结束,1 - 进行中,2 - 待开始
                        'code': '899b20c069d846e3b3980989dc3925b5',
                    },
                    {
                        'start_time': '2013-01-23 23:00:23',
                        'end_time': '23:00:23',
                        'detail': '测试一下',
                        'status': 2,  # 0 - 已结束,1 - 进行中,2 - 待开始
                        'code': '899b20c069d846e3b3980989dc3925b5',
                    },
                ],
                'track_active_list': [
                    {
                        'start_time': '2013-01-23 23:00:23',
                        'end_time': '',
                        'detail': '测试一下',
                        'status': 1,  # 0 - 已结束,1 - 进行中,2 - 待开始
                        'code': '899b20c069d846e3b3980989dc3925b5',
                    },
                ],
                'track_deactive_list': [  # remark: 学生身份不提供该类目
                    {
                        'start_time': '2013-01-23 23:00:23',
                        'end_time': '23:20:23',
                        'detail': '测试一下',
                        'status': 2,  # 0 - 已结束,1 - 进行中,2 - 待开始
                        'code': '899b20c069d846e3b3980989dc3925b5',
                    },
                    {
                        'start_time': '2013-01-23 23:00:23',
                        'end_time': '23:00:23',
                        'detail': '测试一下',
                        'status': 2,  # 0 - 已结束,1 - 进行中,2 - 待开始
                        'code': '899b20c069d846e3b3980989dc3925b5',
                    },
                ],
                'track_toactive_list': [
                    {
                        'start_time': '2013-01-23 23:00:23',
                        'end_time': '23:20:23',
                        'detail': '测试一下',
                        'status': 0,  # 0 - 已结束,1 - 进行中,2 - 待开始
                        'code': '899b20c069d846e3b3980989dc3925b5',
                    },
                    {
                        'start_time': '2013-01-23 23:00:23',
                        'end_time': '23:20:23',
                        'detail': '测试一下',
                        'status': 0,  # 0 - 已结束,1 - 进行中,2 - 待开始
                        'code': '899b20c069d846e3b3980989dc3925b5',
                    },
                ]
            }
        }

        return DictResponse(r=0, data=lesson_index_info)