Esempio n. 1
0
 def get_problemExample(obj):
     data = {}
     problemExampleList = obj.problemexample_set.all()
     data = get_data(obj=problemExampleList,
                     serializer=ProblemExampleSerializer,
                     many=True)
     return data
Esempio n. 2
0
 def get_match(obj):
     dataList = []
     match = obj.match
     data = get_data(obj=match,
                     serializer=MatchSerializer,
                     dataList=dataList)
     return data
Esempio n. 3
0
 def get_problem(obj):
     problem = obj.problem
     dataList = ["no", "title"]
     data = get_data(obj=problem,
                     serializer=ProblemSerializer,
                     dataList=dataList)
     return data
Esempio n. 4
0
def jwt_response_payload_handler(user=None, request=None):
    """
    Returns the response data for both the login and refresh views.
    Override to return a custom response such as including the
    serialized representation of the User.

    Example:

    def jwt_response_payload_handler(token, user=None, request=None):
        return {
            'token': token,
            'user': UserSerializer(user, context={'request': request}).data
        }

    """
    jwt_payload_handler = api_settings.JWT_PAYLOAD_HANDLER  # 获取token载荷
    jwt_encode_handler = api_settings.JWT_ENCODE_HANDLER  # HS256 加密
    payload = jwt_payload_handler(user)
    # 获取ip地址 防止同token异地登录
    if 'HTTP_X_FORWARDED_FOR' in request.META:
        ip = request.META['HTTP_X_FORWARDED_FOR']
    else:
        ip = request.META['REMOTE_ADDR']
    payload['ip'] = ip
    token = jwt_encode_handler(payload)
    return {
        'token': token,
        'user': get_data(obj=user, serializer=UserSerializer, context={'request': request})
    }
Esempio n. 5
0
    def get(self, request):
        data = {'status': 200, 'msg': '获取成功', 'data': {}}  #返回集

        #权限验证 待添加

        submit_Username = request.GET.get("submit_Username", "")
        submit_User_Id = request.GET.get("submit_User_Id", "")

        query_Criteria = {}  #查询集

        #用户列表筛选条件  两个都没有则为查询所有用户列表
        if submit_Username != '':
            query_Criteria['username__iregex'] = submit_Username
        if submit_User_Id != '':
            query_Criteria['id'] = submit_User_Id

        user_List = User.objects.filter(**query_Criteria)

        #分页处理

        dataList = ["id", "username", "nickname", "myClass"]
        page_Num = request.GET.get("page", 1)
        paginator_OfUserAll = Paginator(user_List, 30)
        user_List = paginator_OfUserAll.page(page_Num).object_list
        user_List = get_data(obj=user_List,
                             serializer=UserSerializer,
                             dataList=dataList,
                             many=True)

        data["data"].update({"user_List": user_List})

        return JsonResponse(data)
Esempio n. 6
0
 def get_problem(obj):
     from Issue.serializers import ProblemSerializer
     dataList = ["no", "title"]
     problem = obj.problem
     data = get_data(obj=problem,
                     serializer=ProblemSerializer,
                     dataList=dataList)
     return data
Esempio n. 7
0
 def get(self, request):
     print("xxxxxx")
     is_login, user = check_auth(request._request)  # 获取登录的用户
     data = {'status': 200, 'msg': '成功获取用户信息', 'data': {}}
     if is_login:
         data['data'] = get_data(obj=user, serializers=UserSerializer)
     else:
         data['msg'] = '未登录'
         data['status'] = 400
     return JsonResponse(data=data)
Esempio n. 8
0
 def get(request):
     is_login, user = check_auth(request)  # 获取登录的用户
     return JsonResponse({
         'is_login':
         is_login,
         'user':
         get_data(obj=user,
                  serializer=UserSerializer,
                  context={'request': request}),
         'status':
         200
     })
Esempio n. 9
0
    def get(request):  # 按(提交人|提交结果|提交语言|提交问题)查询第page页的提交列表
        submit_username = request.GET.get('submit_UserName', '')
        judge_states = request.GET.get('judege_States', '')
        language = request.GET.get('language', '')
        problem_id = request.GET.get('problem_Id', '')
        page_num = request.GET.get('page', 1)
        query_Criteria = {}  # 创建一个多条件查询字典
        if submit_username != '':
            query_Criteria[
                'user__username__iregex'] = submit_username  # 用户名不区分大小写
        if judge_states != '' and judge_states != '0':
            query_Criteria['result'] = judge_states
        if language != '' and language != 'All':  # 当值为C++时不知道为什么传不过来,推测可能是无法解析
            if language == 'Csrc':
                query_Criteria['language'] = 'C++'
            else:
                query_Criteria['language'] = language
        if problem_id != '':
            try:
                query_Criteria['problem__no'] = int(problem_id)
            except ValueError:
                pass
        submit_list = ProblemSubmit.objects.filter(
            **query_Criteria).order_by('-runID')
        # change_status(submit_list)

        # 分页
        dataList = [
            "runID", "result", "time", "memory", "language", "subTime", "user",
            "problem"
        ]
        paginator_of_submit_list_all = Paginator(submit_list, 25)  # 分页
        paginator_of_submit_list_all = paginator_of_submit_list_all.page(
            page_num)
        paginator_of_submit_list_all = paginator_of_submit_list_all.object_list
        paginator_of_submit_list_all = get_data(
            obj=paginator_of_submit_list_all,
            serializer=ProblemSubmitSerializer,
            dataList=dataList,
            many=True)

        data = {
            'status': 200,
            'msg': '获取成功',
            'statusList': paginator_of_submit_list_all,
            'now_page': page_num,
            'submit_user_name': submit_username,
            'judge_states': judge_states,
            'language': language,
            'problem_id': problem_id
        }
        return JsonResponse(data)
Esempio n. 10
0
 def get(self, request, username):
     data = {'status': 200, 'msg': '成功获取用户信息', 'data': {}}
     try:
         user = User.objects.get(username=username)  # 获取不到会抛异常
         dataList = [
             "nickname", "GENDER_CHOICE", "school", "major", "headImage",
             "synopsis", "rating", "ac_nums"
         ]
         data['data'] = get_data(obj=user,
                                 serializer=UserSerializer,
                                 dataList=dataList)
     except:
         data['msg'] = '用户不存在'
         data['status'] = 400
     return JsonResponse(data=data)
Esempio n. 11
0
    def get(request):  # 按(id|名字|类型|来源)查询第page页的问题列表
        problem_Id_Name = request.GET.get('problem_Id_Name', '')
        problem_Source = request.GET.get('problem_Source', 'All')
        algorithm_Type = request.GET.get('algorithm_Type', 'All')
        query_Criteria = {'probAuthority': '公开'}  # 创建一个多条件查询字典
        if problem_Id_Name != '':
            try:  # 尝试将参数作为数值处理,并当作id搜索,如果不行,就转化为name进行搜索
                query_Criteria['no'] = int(problem_Id_Name)
            except ValueError:
                query_Criteria['title__iregex'] = '.*'.join(problem_Id_Name)
        if problem_Source != '' and problem_Source != 'All':
            query_Criteria['probSource'] = problem_Source
        if algorithm_Type != '' and algorithm_Type != 'All':
            query_Criteria['classification'] = algorithm_Type
        problems = Problem.objects.filter(**query_Criteria).order_by('-no')
        # 分页处理

        dataList = ["no", "title", 'ac_nums', 'submit_nums']
        paginator_of_problems_all = Paginator(problems, 20)
        page_num = request.GET.get('page', 1)
        paginator_of_problems_all = paginator_of_problems_all.page(page_num)
        paginator_of_problems_all = paginator_of_problems_all.object_list
        paginator_of_problems_all = get_data(obj=paginator_of_problems_all,
                                             serializer=ProblemSerializer,
                                             dataList=dataList,
                                             many=True)

        is_login, user = check_auth(request)
        exec_problems = is_accepted(user, paginator_of_problems_all)
        # 将这些数据返回到前端,这样便于进行多条件过滤
        data = {'status': 200, 'msg': '已获取所有问题'}
        data.update({
            'problems': exec_problems,
            'now_page': page_num,
            'problem_id_name': problem_Id_Name,
            'problem_source': problem_Source,
            'algorithm_type': algorithm_Type
        })

        return JsonResponse(data)
Esempio n. 12
0
    def get(request):
        data = {'status': 200, 'msg': '获取成功', 'data': {}}
        is_login, user = check_auth(request)
        if not is_login:
            data["data"].update({
                'status': 400,
                'msg': '未登录',
            })
            return JsonResponse(data)
        username = request.GET.get("username", "")
        if username != user.username:
            data["data"].update({
                'status': 400,
                'msg': '不同用户',
            })
            return JsonResponse(data)
        problem_Submit_Id = request.GET.get("problem_Submit_Id", "")
        print(problem_Submit_Id)
        problem_Submit = ProblemSubmit.objects.get(runID=problem_Submit_Id)
        problem_Submit = get_data(obj=problem_Submit,
                                  serializer=ProblemSubmitSerializer)

        data["data"] = {"problem_Submit": problem_Submit}
        return JsonResponse(data)
Esempio n. 13
0
 def get_user(obj):
     from UserProfile.serializers import UserSerializer
     dataList = []
     user = obj.user
     data = get_data(obj=user, serializer=UserSerializer, dataList=dataList)
     return data
Esempio n. 14
0
 def get_user(obj):
     from UserProfile.serializers import UserSerializer
     dataList = ["id", "username", "nickname", "school"]
     user = obj.user
     data = get_data(obj=user, serializer=UserSerializer, dataList=dataList)
     return data