Exemple #1
0
def rejudgeGeneralSubmission( request, gsid):
    """
    rejudge the very general submission with the specific id
    """
    try:
        gsid = int( gsid)
        u = User.getSessionUser( request.session)
        if not u:
            raise Err( request, err='not login')

        try:
            g_s = GeneralSubmission.getById( gsid)
        except:
            raise Err( request, err='no generalsubmission',
                    log_format=( '{0}'.format( gsid), ''),
                    user_format=( u'{0}'.format( gsid), u'别扯了!!'),
                    )

        # fake
        if u.priv == 'student':
            raise Err( request, err = 'no priv')

        GeneralSubmission.rejudgeGeneralSubmission( g_s)

        return redirect( 'Submission:status')

    except Exception as e:
        return render( request, Const.NEW_ERROR_PAGE, { 'errmsg': unicode(e), }, )
Exemple #2
0
def generalSubmissionList(request, page_id='1'):
    """
    @view: list general submission
    """

    try:
        page_id = int(page_id)
        u = User.getSessionUser(request.session)
        if not u:
            raise Err( request, err='not login')
        
        # fake
        if u.priv == 'university':
            has_priv = True
        else:
            has_priv = False

        user = u if not has_priv else None
        
        lang_list = [('gcc','GNU C'), ('g++','GNU C++'), ('java','java')]
        form = generalListForm( lang_list, request.GET)
        if form.is_valid():
            if form.cleaned_data['problem_id']:
                try:
                    p = Problem.getById( form.cleaned_data['problem_id'])
                except:
                    raise Err( request, err='request err', 
                            log_format=( 'form invalid', 'problem_id error'), 
                            user_format=( u'输入的内容不合法', u'没有这道题!')
                            )
            else:
                p = None
        else:
            raise Err( request, err='example err', 
                    log_format=( 'form invalid', ''), 
                    user_format=( u'输入的内容不合法', '')
                    )

        g_subs = GeneralSubmission.generalSubmissionList( u=user, p=p, uname=form.cleaned_data['username'], language=form.cleaned_data['language'], status_selected=form.cleaned_data['status'], university=u.university)

        if 'rejudge' in request.GET:
            if has_priv:
                map( lambda x: GeneralSubmission.rejudgeGeneralSubmission( x), g_subs)
            else:
                raise Err( request, err = 'no priv')

        paginator = Paginator( g_subs, Const.STATUS_PER_PAGE)
        page_id = min(max(int(page_id), 1), paginator.num_pages)

        g_s = paginator.page(page_id)

        for g_s_index in g_s:
            g_s_index.status_color = Const.STATUS_COLOR[g_s_index.status] if g_s_index.status in Const.STATUS_COLOR else ''
            g_s_index.status_cn = Const.STATUS_CN[ g_s_index.status]
        return render(request, 'newtpl/submission/general/status.html', {'general_list': g_s, 'form':form, 'tpl':{'can_manage': True if has_priv else False}})

    except Exception as e:
        return render(request, Err.ERROR_PAGE, { 'errmsg': unicode(e) } )
Exemple #3
0
def rejudgeGeneralSubmission(request, gsid):
    """
    rejudge the very general submission with the specific id
    """
    try:
        gsid = int(gsid)
        u = User.getSessionUser(request.session)
        if not u:
            raise Err(request, err='not login')

        try:
            g_s = GeneralSubmission.getById(gsid)
        except:
            raise Err(
                request,
                err='no generalsubmission',
                log_format=('{0}'.format(gsid), ''),
                user_format=(u'{0}'.format(gsid), u'别扯了!!'),
            )

        # fake
        if u.priv == 'student':
            raise Err(request, err='no priv')

        GeneralSubmission.rejudgeGeneralSubmission(g_s)

        return redirect('Submission:status')

    except Exception as e:
        return render(
            request,
            Const.NEW_ERROR_PAGE,
            {
                'errmsg': unicode(e),
            },
        )
Exemple #4
0
def generalSubmissionList(request, page_id='1'):
    """
    @view: list general submission
    """

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

        # fake
        if u.priv == 'university':
            has_priv = True
        else:
            has_priv = False

        user = u if not has_priv else None

        lang_list = [('gcc', 'GNU C'), ('g++', 'GNU C++'), ('java', 'java')]
        form = generalListForm(lang_list, request.GET)
        if form.is_valid():
            if form.cleaned_data['problem_id']:
                try:
                    p = Problem.getById(form.cleaned_data['problem_id'])
                except:
                    raise Err(request,
                              err='request err',
                              log_format=('form invalid', 'problem_id error'),
                              user_format=(u'输入的内容不合法', u'没有这道题!'))
            else:
                p = None
        else:
            raise Err(request,
                      err='example err',
                      log_format=('form invalid', ''),
                      user_format=(u'输入的内容不合法', ''))

        g_subs = GeneralSubmission.generalSubmissionList(
            u=user,
            p=p,
            uname=form.cleaned_data['username'],
            language=form.cleaned_data['language'],
            status_selected=form.cleaned_data['status'],
            university=u.university)

        if 'rejudge' in request.GET:
            if has_priv:
                map(lambda x: GeneralSubmission.rejudgeGeneralSubmission(x),
                    g_subs)
            else:
                raise Err(request, err='no priv')

        paginator = Paginator(g_subs, Const.STATUS_PER_PAGE)
        page_id = min(max(int(page_id), 1), paginator.num_pages)

        g_s = paginator.page(page_id)

        for g_s_index in g_s:
            g_s_index.status_color = Const.STATUS_COLOR[
                g_s_index.
                status] if g_s_index.status in Const.STATUS_COLOR else ''
            g_s_index.status_cn = Const.STATUS_CN[g_s_index.status]
        return render(
            request, 'newtpl/submission/general/status.html', {
                'general_list': g_s,
                'form': form,
                'tpl': {
                    'can_manage': True if has_priv else False
                }
            })

    except Exception as e:
        return render(request, Err.ERROR_PAGE, {'errmsg': unicode(e)})