美文网首页
山东大学-VirtualJudge-总结8

山东大学-VirtualJudge-总结8

作者: LJCgeorge | 来源:发表于2017-06-03 20:44 被阅读0次

在最近的几天,主要是改正在以往contest的实现中存在的一些问题,主要是:
1 无法从contestoverview中进入题目的详细说明页面
2 用户在submit中提交的代码无法正常在Status中显示评测状态
3 Contest的时区设置错误,没有设置为东八区时间
4 实现了Contest 的中的倒计时功能

修改过后的contest_get_problem方法####

def contest_get_problem(req, cid):
    if req.is_ajax():
        contest = Contest.objects.get(id=cid)
        pid = req.GET.get('pid')
        t = loader.get_template('contest/contest_problem.html')
        problem = Problem.objects.get(proid=pid)
        if contest.private:
            if req.user.is_superuser==False and req.user.info not in contest.accounts.all() :
                problem = []
        #content_html = t.render(Context({'problem': problem, 'user' : req.user}))
        # return HttpResponse(content_html)
        return render(req,'contest/contest_problem.html',{'problem': problem, 'user' : req.user})

修改过后的submit方法####

def contest_submit(req, cid):
    contest = Contest.objects.get(id=cid)
    #time = datetime.datetime.now(pytz.timezone(pytz.country_timezones('cn')[0]))
    # time1=time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))
    time=timezone.now()
    # print(contest.start_time + contest.duration_time)
    if time > contest.start_time + contest.duration_time:
        finish = True
    else:
        finish = False

    if contest.private:
        if req.user.is_superuser==False and req.user.info not in contest.accounts.all() :
            return HttpResponseRedirect("/contest/" + cid + "/")

    if req.method == 'GET':
        return ren2res("contest/contest_submit.html", req, {'contest': contest, 'problems': contest.get_problem_list()})
    elif req.method == 'POST':
        pid = req.POST.get('pid')
        #need change start
        # sub = Status(pro=Problem.objects.get(proid=pid), user=req.user, lang=req.POST.get('lang'))
        sub = Status(user=req.user, pro=Problem.objects.get(proid=pid), lang=req.POST.get('lang'), result='Waiting', 
            time=time)

        if not finish:
            sub.cid = contest.id
        else:
            sub.cid = -1
        sub.save()
        if req.POST.get('code'):
            content_file = ContentFile(req.POST.get('code'))
        elif req.FILES:
            content_file = ContentFile(req.FILES['file'].read())
        else:
            return ren2res("contest/contest_submit.html", req,
                           {'contest': contest, 'problems': contest.get_problem_list(), 'err': 'No Submit!'})
        #sub.source_code.save(name=str(sub.runid), content=content_file)
        sub.save()
        #judger.Judger(sub)
        #result=judge_delay.delay(sub)
    if not finish:
        return HttpResponseRedirect("/contest/" + cid + "/")
    else:
        return HttpResponseRedirect("/contest/"+cid+"/status?pid=" + pid)
        #need change end

overview 从overview进入问题描述界面 修正时区

contest实现正确的计时:

Contest开始时间还未到 contest开始之后正确计时

接下来主要集中在开发contestclarification功能,以及整个virtualJudgeRank功能

相关文章

  • 山东大学-VirtualJudge-总结8

    在最近的几天,主要是改正在以往contest的实现中存在的一些问题,主要是:1 无法从contest的overvi...

  • 山东大学-VirtualJudge-总结4

    在最近这几天,由于我下一步主要工作负责SDUVJ前端的开发以及前段和前端与后台之间的通信,所以在通读对Django...

  • 山东大学-VirtualJudge-总结3

    在过去的几天时间里面,我主要把精力集中在研究SDUOJ的源码构架,同时自己尝试去使用Django建立一个简单的个人...

  • 山东大学-VirtualJudge-总结7

    在过去的几天时间里面,我主要集中精力实现Contest 的的Rank以及Status功能 Rank实现代码####...

  • 山东大学-VirtualJudge-总结9

    实现了在contest中的clarification功能以及对于已经存在的问题进行了修改: 部分核心代码:

  • 山东大学-VirtualJudge-总结1

    在这个周根据小组进度安排,我主要学习了Python爬虫的编写,学习主要参考:python实现简单爬虫功能 根据博客...

  • 山东大学-VirtualJudge-总结2

    这个周我的下一步工作主要是数据库的设计: 首先为了更好的设计OnlineJudge的数据库,我首先查看了SDUOJ...

  • 山东大学-VirtualJudge-总结6

    最近的几天时间内,主要是进一步开发SDUVJ的contest的其他功能中,并在最终完成了contest的基本的开发...

  • 山东大学-VirtualJudge-总结5

    最近这几天,在学习了OJ 的contest 的基础上,实现了VJ自己的contest 的基本界面 Contest后...

  • 2019-08-11

    山东大学管理学院“北纬36度”团队寻访优秀校友李群女士 8月8日,山东大学管理学院暑期寻访优秀校友“北纬36度”团...

网友评论

      本文标题:山东大学-VirtualJudge-总结8

      本文链接:https://www.haomeiwen.com/subject/goumfxtx.html