Esempio n. 1
0
File: views.py Progetto: YLAsce/oj
def showBoardByDynamicScore(request, cId):
    logger.info(str(request).replace("\n", "\t"))
    try:
        u = User.getSessionUser(request.session)
        if not u:
            raise Err(request, 'not login')
        try:
            c = Contest.getById(cId)
        except:
            raise Err(request, 'no resource')

        try:
            c.canEnterContest(u)
        except:
            raise Err(request, 'no priv')

        return render(request, "newtpl/statistic/board_dynamic_score.html", {
            'contest': c,
            'tpl': {
                'has_priv': Contest.hasPriv(c.course_class, u)
            }
        })
    except Exception as e:
        logger.error(str(e).replace("\n", "\t"))
        return render(request, Err.ERROR_PAGE)
Esempio n. 2
0
def showCourseClassProblems(request, course_class_id=None, page_id='1'):  # new
    logger.info(str(request).replace("\n", "\t"))
    """
    views used to show problems that some courseclass can touch
    """

    tpl = {'sp': True}
    try:
        page_id = int(page_id)
        u = User.getSessionUser(request.session)
        if not u:
            raise Err(request, err='not login')

        try:
            course_class = CourseClass.getById(course_class_id)
        except:
            raise Err(
                request,
                err='no courseclass',
                log_format=('{0}'.format(course_class_id), ''),
                user_format=(u'{0}'.format(course_class_id), u'干什么呢这是!'),
            )

        if not course_class.canBeAccessed(u):
            raise Err(request, err='no priv')
        elif course_class.canBeManaged(u):
            # privilge to show all things( univ & shc & c & cc admin)
            tpl['can_manage'] = True
        else:
            tpl['can_show'] = True

        if CourseClass.canDoCourseClass(course_class.course, u):
            tpl['can_modify'] = True

        problems = Problem.objects.filter(course_id=course_class.course.id)

        tpl['page_selected'] = 'problem'

        paginator = Paginator(problems, Const.PROBLEM_PER_PAGE)
        page_id = min(max(int(page_id), 1), paginator.num_pages)

        return render(
            request,
            'newtpl/course/course_class_problem_list.html',
            {
                'course_class': course_class,
                'problem_list': paginator.page(page_id),
                'tpl': tpl
            },
        )

    except Exception as e:
        logger.error(str(e).replace("\n", "\t"))
        return render(
            request,
            Err.ERROR_PAGE,
            {
                'errmsg': unicode(e),
            },
        )
Esempio n. 3
0
File: views.py Progetto: YLAsce/oj
def manageSchool(request):
    logger.info(str(request).replace("\n", "\t"))
    try:
        u = User.getSessionUser(request.session)
        if u == False:
            raise Err(request, 'not login')
        if not (u.priv == 'university' or u.priv == 'school'):
            raise Err(request, 'no priv')

        schlist = School.objects.filter(university=u.university)
        if u.priv == 'university':
            can_manage = True
        else:
            schlist = schlist.filter(admin=u)
            can_manage = False
        return render(
            request, 'newtpl/user/manageschool.html', {
                'school_list': schlist,
                'tpl': {
                    'sp': True,
                    'can_manage': can_manage,
                },
            })
    except Exception as e:
        logger.error(str(e).replace("\n", "\t"))
        return render(request, Err.ERROR_PAGE)
Esempio n. 4
0
File: views.py Progetto: YLAsce/oj
def update(request):
    logger.info(str(request).replace("\n", "\t"))
    try:
        u = User.getSessionUser(request.session)
        if u == False:
            raise Err(request, 'not login')

        if request.method == 'GET':
            return render(request, 'newtpl/user/update.html', {'tpl': tpltrue})

        nickname = request.POST['nickname']
        passwd1 = request.POST['passwd']
        passwd2 = request.POST['passwd2']
        email = request.POST['email']
        gender = request.POST['gender']

        if email == '':
            email = None
        if passwd1 != passwd2:
            raise Err(request, 'passwd diff')
        try:
            if passwd1 != '':
                u.update(nickname, passwd1, email, gender)
            else:
                u.updateNoPass(nickname, email, gender)
        except Exception as e:
            raise Err(request, str(e))
        return redirect('/user/')
    except Err as e:
        logger.error(str(e).replace("\n", "\t"))
        return render(request, Err.ERROR_PAGE)
Esempio n. 5
0
File: views.py Progetto: YLAsce/oj
def addGroup(request):
    logger.info(str(request).replace("\n", "\t"))
    try:
        u = User.getSessionUser(request.session)
        if u == False:
            raise Err(request, 'not login')
        if not u.priv == 'university':
            raise Err(request, 'no priv')

        if request.method == 'GET':
            school_cddt = School.objects.filter(university=u.university)
            admin_cddt = User.objects.filter(priv='group',
                                             university=u.university)
            return render(
                request, 'newtpl/user/addgroup.html', {
                    'school_cddt': school_cddt,
                    'user': u,
                    'admin_cdt': admin_cddt,
                    'tpl': tpltrue
                })

        group_name = request.POST['groupname']
        school_id = request.POST['school']
        try:
            Group.addGroup(group_name, School.objects.get(pk=school_id))
        except:
            raise Err(request, 'groupname illegal')
        return redirect('/user/manage/group/')
    except Err:
        logger.error(str(e).replace("\n", "\t"))
        return render(request, Err.ERROR_PAGE)
Esempio n. 6
0
File: views.py Progetto: YLAsce/oj
def listManageProblem(request, pageId="1"):  # modified
    logger.info(str(request).replace("\n", "\t"))
    try:
        pageId = int(pageId)
        u = User.getSessionUser(request.session)
        if not u:
            raise Err(request, 'not login')
        if u.priv == 'student':
            raise Err(request, 'no priv')

        problemList = Problem.problemManageList(u)
        """
        tres = Problem.problemList(u)
        if (pageId-1)*Const.PROBLEM_PER_PAGE>=len(tres):
            raise Err(request, 'unknown err')
        res = tres[(pageId-1)*Const.PROBLEM_PER_PAGE:Const.PROBLEM_PER_PAGE]
        """
        info = {}
        if u.university.isAdmin(u):
            info['admin'] = True
        return render(request, "newtpl/problem/manageProblemList.html", {
            'problem_list': problemList,
            'info': info,
            'tpl': {
                'sp': True
            }
        })
    except Exception as e:
        logger.error(str(e).replace("\n", "\t"))
        return render(request, Err.ERROR_PAGE, {'errmsg': unicode(e)})
Esempio n. 7
0
File: views.py Progetto: YLAsce/oj
def rejudgeSubmission( request, sid):
    logger.info(str(request).replace("\n\r","\t"))
    """
    rejudge the very submission with the specific sid
    """
    try:
        sid = int( sid)
        u = User.getSessionUser( request.session)
        if not u:
            raise Err( request, err='not login')

        try:
            s = Submission.getById( sid)
        except:
            raise Err( request, err='no submission',
                    log_format=( '{0}'.format( sid), ''),
                    user_format=( u'{0}'.format( sid), u'不要搞笑!!'),
                    )

        if not s.problem_index.contest.course_class.canBeManaged( u):
            raise Err( request, err = 'no priv')

        Submission.rejudgeSubmission( s)

        return redirect( 'Submission:contest_status', contest_id=s.problem_index.contest.cid) 

    except Exception as e:
        logger.error(str(e).replace("\n\r","\t"))
        return render( request, Const.NEW_ERROR_PAGE, { 'errmsg': unicode(e), }, )
Esempio n. 8
0
def addRecord(request, cid):
    try:
        u = User.getSessionUser(request.session)
        if not u:
            raise Err(request, err='not login')

        c = Contest.getById(cid)
        try:
            c.canBeManaged(u)
        except:
            raise Err(request, err='no priv')

        cp = c.getContestProblem()

        if request.method == 'POST':
            form = ChooseProbForm(cp, request.POST) 
            if form.is_valid():
                Cheat.addRecord(cp_set=form.cleaned_data['contest_problem'])
                Cheat.antiCheat()
                return redirect('Cheat:show_cheat_result', cid=c.cid)
            else:
                raise Err(request, err='unknown err')
        else:
            form = ChooseProbForm(cp)
            return render(request, 'newtpl/cheat/addRecord.html', {'tpl':{'sp':True,}, 'contest':c, 'form':form,})
    except Exception as e:
        return render(request, Err.ERROR_PAGE)
Esempio n. 9
0
File: views.py Progetto: YLAsce/oj
def resetGroupMemberPasswd(request, group_id, mode='random'):
    logger.info(str(request).replace("\n", "\t"))
    try:
        try:
            g = Group.getById(group_id)
        except:
            raise Err(request, 'group not exist')
        u = User.getSessionUser(request.session)
        if u == False:
            raise Err(request, 'not login')
        if not (u.priv == 'university'
                and u.university == g.school.university):
            raise Err(request, 'no priv')

        succ = {}
        for u in g.allMembers():
            newpasswd = u.ResetPasswd(mode)
            succ[u.username] = newpasswd
        return render(request, 'newtpl/user/resetresult.html', {
            'group': g,
            'succ': succ,
            'tpl': tpltrue
        })
    except Exception as e:
        logger.error(str(e).replace("\n", "\t"))
        return render(request, Err.ERROR_PAGE)
Esempio n. 10
0
File: views.py Progetto: YLAsce/oj
def addSchool(request):
    logger.info(str(request).replace("\n", "\t"))
    try:
        u = User.getSessionUser(request.session)
        if u == False:
            raise Err(request, 'not login')
        if not u.priv == 'university':
            raise Err(request, 'no priv')

        if request.method == 'GET':
            form = AddSchoolForm()
            return render(request, 'newtpl/user/addschool.html', {
                'form': form,
                'user': u,
                'tpl': tpltrue
            })

        form = AddSchoolForm(request.POST)
        if form.is_valid():
            school_abbr = form.cleaned_data['schoolabbr']
            school_name = form.cleaned_data['schoolname']
            try:
                School.addSchool(school_abbr, school_name, u.university)
            except Exception as e:
                raise Err(request, 'school info illegal')
            return redirect('/user/manage/school/')
        else:
            return render(request, 'newtpl/error.html', {
                'errmsg': form._errors,
                'user': u
            })
    except Err as e:
        logger.error(str(e).replace("\n", "\t"))
        return render(request, Err.ERROR_PAGE)
Esempio n. 11
0
File: views.py Progetto: YLAsce/oj
def listStudent2(request):
    logger.info(str(request).replace("\n", "\t"))
    try:
        u = User.getSessionUser(request.session)
        if not u:
            raise Err(request, 'not login')
        if not u.priv == 'university':
            raise Err(request, 'no priv')
        form = SearchUserForm(request.GET)
        if form.is_valid():
            username = form.cleaned_data['username']
            if username == '':
                allstudent = User.objects.filter(university=u.university,
                                                 priv='student')
                return render(request, 'newtpl/user/allstudent.html', {
                    'allstudent': allstudent,
                    'tpl': tpltrue
                })

            target_user = User.getUserByRawUsername(username)
            if not target_user:
                raise Err(request, 'no such user')
            return redirect('User:viewuser', uid=target_user.uid)
        else:
            raise Err(request, 'no such user')
    except Exception as e:
        logger.error(str(e).replace("\n", "\t"))
        return render(request, Err.ERROR_PAGE)
Esempio n. 12
0
def showContestProblemStatistics(request, p_index=None, cid=None):
    logger.info(str(request).replace("\n", "\t"))
    """
    view used to show statistics of a problem in a contest
    """
    try:
        u = User.getSessionUser(request.session)
        if not u:
            raise Err(request, err='not login')

        cid = int(cid)
        c = Contest.getById(cid)

        p_index = p_index if p_index else ''

        try:
            contest_problem = ContestProblem.getBy(c, p_index)
        except:
            raise Err(
                request,
                err='no contestproblem',
                log_format=('{0}'.format(p_index), ''),
                user_format=(u'{0}'.format(p_index), u'搞错了什么吧!'),
            )

        if not contest_problem.contest.course_class.canBeManaged(u):
            raise Err(request, err='no priv')

        all_submissions = Submission.submissionList(cp=contest_problem)
        submissions = all_submissions.filter(
            status='Accepted').order_by('run_time')[:20]

        status_list = []
        for i in Const.STATUS_CN.iterkeys():
            status_list.append({
                'name':
                Const.STATUS_CN[i],
                'number':
                all_submissions.filter(status=i).count()
            })

        for sub_s in submissions:
            sub_s.status_color = Const.STATUS_COLOR[
                sub_s.status] if sub_s.status in Const.STATUS_COLOR else ''
            sub_s.status_cn = Const.STATUS_CN[sub_s.status]

        return render(
            request, 'newtpl/statistic/contest_problem.html', {
                'submissions': submissions,
                'contest_problem': contest_problem,
                'status_list': status_list,
                'tpl': {
                    'sp': True
                }
            })

    except Exception as e:
        logger.error(str(e).replace("\n", "\t"))
        return render(request, Err.ERROR_PAGE, {'errmsg': unicode(e)})
Esempio n. 13
0
def showCourse(request, course_id=None):  # new
    logger.info(str(request).replace("\n", "\t"))
    """
    views used to show Course
    """

    tpl = {'sp': True}
    try:
        course_id = int(course_id)
        u = User.getSessionUser(request.session)
        if not u:
            raise Err(request, err='not login')

        try:
            course = Course.getById(course_id)
        except:
            raise Err(
                request,
                err='no course',
                log_format=('{0}'.format(course_id), ''),
                user_format=(u'{0}'.format(course_id), u'别搞笑好嘛!!'),
            )

        if not course.canBeAccessed(u):
            raise Err(request, err='no priv')
        else:
            tpl['can_manage'] = True

        # total privilege( university )
        if Course.canDoCourse(course.school.university, u):
            tpl['can_modify'] = True

        # privilege to set admin( university & school)
        if course.canSetAdmin(u):
            tpl['can_set_admin'] = True

        tpl['page_selected'] = 'index'

        # course_classes = CourseClass.getByCourse( course)

        # problems = Problem.objects.filter( course_id=course.id)

        return render(
            request,
            'newtpl/course/course.html',
            {
                'course': course,
                'tpl': tpl
            },
        )

    except Exception as e:
        logger.error(str(e).replace("\n", "\t"))
        return render(
            request,
            Err.ERROR_PAGE,
            {'errmsg': unicode(e)},
        )
Esempio n. 14
0
def showCourseClass(request, course_class_id=None):  # new
    logger.info(str(request).replace("\n", "\t"))
    """
    views used to show CourseClass
    """

    tpl = {'sp': True}
    try:
        u = User.getSessionUser(request.session)
        if not u:
            raise Err(request, err='not login')

        try:
            course_class = CourseClass.getById(course_class_id)
        except:
            raise Err(
                request,
                err='no courseclass',
                log_format=('{0}'.format(course_class_id), ''),
                user_format=(u'{0}'.format(course_class_id), u'干什么呢这是!'),
            )

        if not course_class.canBeAccessed(u):
            raise Err(request, err='no priv')
        elif course_class.canBeManaged(u):
            # privilge to show all things( univ & shc & c & cc admin)
            tpl['can_manage'] = True
        else:
            tpl['can_show'] = True

        # total privilege( university & school)
        if CourseClass.canDoCourseClass(course_class.course, u):
            tpl['can_modify'] = True

        # privilege to set admin( university & school)
        if course_class.canSetAdmin(u):
            tpl['can_set_admin'] = True

        tpl['page_selected'] = 'index'

        return render(
            request,
            'newtpl/course/course_class.html',
            {
                'course_class': course_class,
                'tpl': tpl
            },
        )

    except Exception as e:
        logger.error(str(e).replace("\n", "\t"))
        return render(
            request,
            Err.ERROR_PAGE,
            {
                'errmsg': unicode(e),
            },
        )
Esempio n. 15
0
def showContest(request, cId):
    try:
        u = User.getSessionUser(request.session)
        if not u:
            raise Err(request, 'not login')

        c = Contest.getById(cId)
        try:
            c.canEnterContest(u)
        except:
            raise Err(request, 'no priv')

        c.course_class_name = unicode(c.course_class.getFullName())
        c.description = unicode(c.contest_description)
        c.title = unicode(c.contest_title)
        now = datetime.now()
        c.time_passed = min(
            max(int((now - c.start_time).total_seconds()) / 60, 0), c.length)
        c.time_passed_percent = 100 * c.time_passed / c.length
        c.time_left = c.length - c.time_passed
        if c.start_time + timedelta(minutes=c.length) < now:
            c.status = 'ended'
        elif c.start_time > now:
            c.status = 'scheduled'
        else:
            c.status = 'running'

        cn = c.getContestNotice()
        priv = Contest.hasPriv(c.course_class, u)

        problemList = c.getContestProblem()
        for cp, cp_res, cp_user_res in zip(problemList, getContestResult(c=c),
                                           getContestUserResult(c=c, u=u)):
            cp.index = cp.problem_index
            cp.title = unicode(cp.problem_title)
            cp.tlim = cp.problem.prob_time
            cp.mlim = cp.problem.prob_memory
            cp.ac = cp_res['ac_cnt']
            cp.sub = cp_res['sub_cnt']
            cp.ratio = cp_res['ac_ratio']
            cp.user_res = cp_user_res

        return render(
            request, 'newtpl/contest/showContest.html', {
                'contest': c,
                'problem_list': problemList,
                'contest_notice_list': cn,
                'ccid': c.course_class.id,
                'tpl': {
                    'has_priv': priv,
                    'nav_act': 'contest',
                }
            })
    except Exception as e:
        return render(request, Err.ERROR_PAGE, {
            'errmsg': unicode(e),
        })
Esempio n. 16
0
File: views.py Progetto: YLAsce/oj
def showResult(request, cid, page='1'):
    try:
        u = User.getSessionUser(request.session)
        if not u:
            raise Err(request, err='not login')

        c = Contest.getById(int(cid))
        try:
            c.canBeManaged(u)
        except:
            raise Err(request, err='no priv')

        if ('threshold' in request.GET) and request.GET['threshold']:
            threshold = float(request.GET['threshold'])
        else:
            threshold = Const.CHEAT_DEFAULT_THRESHOLD

        cheatList = Cheat.getCheatList(contest=c, threshold=threshold)
        paginator = Paginator(cheatList, Const.CHEAT_PER_PAGE)
        page = min(max(int(page), 1), paginator.num_pages)

        cl = paginator.page(page)
        for idx, element in enumerate(cl):
            info_a = eval(element.sub1.other_info)
            info_b = eval(element.sub2.other_info)
            #cl[idx] = {'c': element, 'ip_a': info_a['submit_ip'], 'ip_b': info_b['submit_ip']}

        return render(request, 'newtpl/cheat/showResult.html', {
            'tpl': {
                'sp': True,
            },
            'contest': c,
            'cheat_list': cl
        })
    except Exception as e:
        return render(request, Err.ERROR_PAGE)


# def codeDiff(request, ctid):
#     try:
#         u = User.getSessionUser(request.session)
#         if not u:
#             raise Err(request, err='not login')
#         ct = Cheat.objects.select_related('sub1__user', 'sub2__user').get(ctid=ctid)
#
#         try:
#             ct.contest.canBeManaged(u)
#         except:
#             raise Err(request, err='no priv')
#
#         return render(request, 'newtpl/cheat/codeDiff.html', {'tpl':{'sp':True,}, 'sub1':ct.sub1, 'sub2':ct.sub2})
#
#
#     except Exception as e:
#         return render(request, Err.ERROR_PAGE)
    """
Esempio n. 17
0
File: views.py Progetto: YLAsce/oj
def showContestProblem(request, c_id, idx):  # modified
    logger.info(str(request).replace("\n", "\t"))
    try:
        u = User.getSessionUser(request.session)
        if not u:
            raise Err(request, 'not login')

        c_id = int(c_id)
        c = Contest.getById(c_id)
        cn = c.getContestNotice()
        cp = ContestProblem.getBy(c=c, idx=idx)

        try:
            c.canEnterContest(u)
        except:
            raise Err(request, 'no priv')

        can_manage = True
        try:
            c.canBeManaged(u)
        except:
            can_manage = False

        if (not c.canEnterWithTime(u)) and (not can_manage):
            raise Err(request, 'contest not started')

        c.course_class_name = unicode(c.course_class.getFullName())

        p = cp.problem
        p.idx = cp.problem_index
        p.title = unicode(cp.problem_title)
        p.desc = json.loads(p.prob_desc)

        cp_list = c.getContestProblem()
        for cp, cp_res, cp_user_res in zip(cp_list, getContestResult(c=c),
                                           getContestUserResult(c=c, u=u)):
            cp.ac = cp_res['ac_cnt']
            cp.sub = cp_res['sub_cnt']
            cp.user_res = cp_user_res

        return render(
            request, "newtpl/problem/showContestProblem.html", {
                'c': c,
                'cp_list': cp_list,
                'contest_notice_list': cn,
                'p': p,
                'status_query': queryString(problem_index=p.idx),
                'tpl': {
                    'sp': True,
                    'can_manage': can_manage
                }
            })
    except Exception as e:
        logger.error(str(e).replace("\n", "\t"))
        return render(request, Err.ERROR_PAGE)
Esempio n. 18
0
File: views.py Progetto: YLAsce/oj
def modifyGroup(request, group_id):
    logger.info(str(request).replace("\n", "\t"))
    try:
        u = User.getSessionUser(request.session)
        if u == False:
            raise Err(request, 'not login')
        if not u.priv == 'university':
            raise Err(request, 'no priv')

        try:
            g = Group.objects.get(pk=group_id)
        except:
            raise Err(request, 'group not exist')
        if g.school.university != u.university:
            raise Err(request, 'no priv')

        schs = School.objects.filter(university=u.university)
        if request.method == 'GET':
            init = {'name': g.name, 'school': g.school}
            form = ModifyGroupForm(schs, init)
            return render(
                request, 'newtpl/user/modifygroup.html', {
                    'form': form,
                    'group': g,
                    'users': g.allMembers(),
                    'schools': schs,
                    'tpl': tpltrue
                })
        else:
            form = ModifyGroupForm(schs, request.POST)
            if form.is_valid():
                g.name = form.cleaned_data['name']
                g.school = form.cleaned_data['school']
                g.save()
                return redirect('/user/manage/group/')
            else:
                return render(
                    request, 'newtpl/user/modifygroup.html', {
                        'form': form,
                        'group': g,
                        'users': g.allMembers(),
                        'schools': schs,
                        'tpl': tpltrue
                    })
    except Err:
        logger.error(str(e).replace("\n", "\t"))
        return render(request, Err.ERROR_PAGE)
Esempio n. 19
0
def submit(request):
    try:
        u = User.getSessionUser(request.session)
        if not u:
            raise Err(request, err='not login')
        return render(request, 'newtpl/print/submit.html', {'uname': str(u), 'tpl': {'sp': True}}) 
    except Exception as e:
        return render(request, Err.ERROR_PAGE, {'errmsg': unicode(e), }, )
Esempio n. 20
0
def chooseCourseClass(request):
    try:
        u = User.getSessionUser(request.session)
        if not u:
            raise Err(request, 'not login')
        if u.isStudent():
            raise Err(request, 'no priv')
        cc_list = CourseClass.getAllManagedClasses(u)

        return render(request, 'newtpl/contest/chooseCourseClass.html', {
            'list': cc_list,
            'tpl': {
                'sp': True
            }
        })
    except Exception as e:
        return render(request, Err.ERROR_PAGE)
Esempio n. 21
0
def addRecord2(request, cid):
    try:
        u = User.getSessionUser(request.session)
        if not u:
            raise Err(request, err='not login')

        c = Contest.getById(cid)
        try:
            c.canBeManaged(u)
        except:
            raise Err(request, err='no priv')

        cp = c.getContestProblem()
        Cheat.addRecord(cp_set=cp)
        Cheat.antiCheat()
        return redirect('Cheat:show_cheat_result', cid=c.cid)
    except Exception as e:
        return render(request, Err.ERROR_PAGE)
Esempio n. 22
0
File: views.py Progetto: YLAsce/oj
def listStudent(request):
    logger.info(str(request).replace("\n", "\t"))
    try:
        u = User.getSessionUser(request.session)
        if not u:
            raise Err(request, 'not login')
        if not u.priv == 'university':
            raise Err(request, 'no priv')

        allstudent = User.objects.filter(university=u.university,
                                         priv='student')
        return render(request, 'newtpl/user/allstudent.html', {
            'allstudent': allstudent,
            'tpl': tpltrue
        })
    except Exception as e:
        logger.error(str(e).replace("\n", "\t"))
        return render(request, Err.ERROR_PAGE)
Esempio n. 23
0
File: views.py Progetto: YLAsce/oj
def chooseCourse(request):
    logger.info(str(request).replace("\n", "\t"))
    try:
        u = User.getSessionUser(request.session)
        if not u:
            raise Err(request, 'not login')
        if u.isStudent():
            raise Err(request, 'no priv')
        cs_list = Course.getAllManagedCourses(u)

        return render(request, 'newtpl/problem/chooseCourse.html', {
            'list': cs_list,
            'tpl': {
                'sp': True
            }
        })
    except Exception as e:
        logger.error(str(e).replace("\n", "\t"))
        return render(request, Err.ERROR_PAGE)
Esempio n. 24
0
File: views.py Progetto: YLAsce/oj
def delMember(request, group_id, user_id):
    logger.info(str(request).replace("\n", "\t"))
    try:
        u = User.getSessionUser(request.session)
        if u == False:
            raise Err(request, 'not login')
        if not u.priv == 'university':
            raise Err(request, 'no priv')

        g = Group.objects.get(pk=group_id)
        utodel = User.objects.get(pk=user_id)
        if g.school.university != u.university:
            raise Err(request, 'no priv')
        if utodel.university != u.university:
            raise Err(request, 'no priv')
        g.delMember(utodel)
        return redirect('/user/modify/group/' + group_id)
    except Err:
        logger.error(str(e).replace("\n", "\t"))
        return render(request, Err.ERROR_PAGE)
Esempio n. 25
0
File: views.py Progetto: YLAsce/oj
def deleteProblem(request, problem_id):
    logger.info(str(request).replace("\n", "\t"))
    try:
        user = User.getSessionUser(request.session)
        if not user:
            raise Err(request, 'not login')
        try:
            prob = Problem.getById(int(problem_id))
        except:
            raise Err(request, 'problem illegal')
        if not prob.author.university.isAdmin(user):
            raise Err(request, 'no priv')
        prob.deleteProblem()

        messages.add_message(request, messages.SUCCESS,
                             u'删除题目%d成功' % int(problem_id))
        return redirect('Problem:manage')

    except Exception as e:
        return render(request, Err.ERROR_PAGE, {'errmsg': unicode(e)})
Esempio n. 26
0
File: views.py Progetto: YLAsce/oj
def showProblem(request, p_id):  # modified
    logger.info(str(request).replace("\n", "\t"))
    try:
        u = User.getSessionUser(request.session)
        if not u:
            raise Err(request, 'not login')
        p_id = int(p_id)
        p = Problem.getById(p_id)
        if not p.canViewProblem(u):
            raise Err(request, 'no priv')
        p.desc = json.loads(p.prob_desc)
        return render(request, "newtpl/problem/showProblem.html", {
            'p': p,
            'tpl': {
                'sp': True
            }
        })
    except Exception as e:
        logger.error(str(e).replace("\n", "\t"))
        return render(request, Err.ERROR_PAGE)
Esempio n. 27
0
File: views.py Progetto: YLAsce/oj
def viewUserInfo(request, uid):
    logger.info(str(request).replace("\n", "\t"))
    try:
        u = User.getSessionUser(request.session)
        utov = User.objects.get(pk=uid)
        if u == False:
            raise Err(request, 'not login')
        # elif u.priv != 'university':
        elif u.priv == 'student' and u.uid != utov.uid:
            raise Err(request, 'no priv')
        else:
            if utov.university != u.university:
                raise Err(request, 'no priv')
            return render(request, 'newtpl/user/viewuser.html', {
                'user': u,
                'utov': utov,
                'tpl': tpltrue
            })
    except Err:
        logger.error(str(e).replace("\n", "\t"))
        return render(request, Err.ERROR_PAGE, {'errmsg': Err})
Esempio n. 28
0
File: views.py Progetto: YLAsce/oj
def resetGroupMemberPasswdHomepage(request, group_id):
    logger.info(str(request).replace("\n", "\t"))
    try:
        try:
            g = Group.getById(group_id)
        except:
            raise Err(request, 'group not exist')
        u = User.getSessionUser(request.session)
        if u == False:
            raise Err(request, 'not login')
        if not (u.priv == 'university'
                and u.university == g.school.university):
            raise Err(request, 'no priv')

        return render(request, 'newtpl/user/resethomepage.html', {
            'group': g,
            'tpl': tpltrue
        })
    except Err as e:
        logger.error(str(e).replace("\n", "\t"))
        return render(request, Err.ERROR_PAGE)
Esempio n. 29
0
def courseList(request, page_id='1'):  # new
    logger.info(str(request).replace("\n", "\t"))
    """
    views used to show Course List
    """

    tpl = {'sp': True}
    try:
        page_id = int(page_id)
        u = User.getSessionUser(request.session)
        if not u:
            raise Err(request, err='not login')

        if u.priv == 'university':
            tpl['can_modify'] = True
        elif u.priv == 'school':
            tpl['can_manage'] = True
        elif u.priv != 'course':
            raise Err(request, err='no priv')

        courses = Course.getAllManagedCourses(u)

        return render(
            request,
            'newtpl/course/course_list.html',
            {
                'course_list': courses,
                'tpl': tpl
            },
        )

    except Exception as e:
        logger.error(str(e).replace("\n", "\t"))
        return render(
            request,
            Err.ERROR_PAGE,
            {
                'errmsg': str(e),
            },
        )
Esempio n. 30
0
def deleteCourse(request, course_id=None):  # new
    logger.info(str(request).replace("\n", "\t"))
    """
    views used to delete Course
    """

    try:
        course_id = int(course_id)
        u = User.getSessionUser(request.session)
        if not u:
            raise Err(request, err='not login')

        try:
            course = Course.getById(course_id)
        except:
            raise Err(
                request,
                err='no course',
                log_format=('{0}'.format(course_id), ''),
                user_format=(u'{0}'.format(course_id), u'别搞笑好嘛!!'),
            )

        school = course.school

        if not Course.canDoCourse(school.university, u):
            raise Err(request, err='no priv')

        Course.deleteCourse(course_id)

        return redirect('User:show_school', school_id=school.id)

    except Exception as e:
        logger.error(str(e).replace("\n", "\t"))
        return render(
            request,
            Err.ERROR_PAGE,
            {
                'errmsg': str(e),
            },
        )