Ejemplo n.º 1
0
def asgn_rank_board(request, sid, aid):
    """
    作业滚动排行榜
    :param request:
    :param sid:
    :param aid: aid
    :return:
    """
    wejudge_session = WeJudgeEducationSession(request)  # 创建会话
    response = WeJudgeResponse(wejudge_session)  # 创建响应

    manager = libs.EducationAsgnController(request, response, sid)
    manager.get_asgn(aid)

    # 检查访问权限
    manager.login_check()
    manager.check_assistant()  # 助教提权

    flag, msg = manager.check_asgn_visit()
    if flag < 1:
        raise WeJudgeError(3120)

    return response.render_page(request, 'education/asgn/board.tpl', {
        "course": manager.course,
        "asgn": manager.asgn,
        "school": manager.school,
    })
Ejemplo n.º 2
0
def asgn_manager(request, sid, aid):
    """
    作业管理
    :param request:
    :param sid
    :param aid: aid
    :return:
    """
    wejudge_session = WeJudgeEducationSession(request)  # 创建会话
    response = WeJudgeResponse(wejudge_session)  # 创建响应

    manager = libs.EducationAsgnController(request, response, sid)
    manager.get_asgn(aid)

    # 检查访问权限
    manager.login_check()

    if not wejudge_session.is_master_logined():
        if wejudge_session.account.master is not None:
            # 如果主账户没有登录,则挂起登录
            from apps.account.libs import session
            session.WeJudgeAccountSessionManager(
                request,
                response).login_by_system(wejudge_session.account.master)

    manager.check_assistant()  # 助教提权

    flag, msg = manager.check_asgn_visit()

    if flag != 2:
        raise WeJudgeError(3120)

    response.set_navlist([
        const.apps.EDUCATION,
        [manager.school.name, 'education.school', (manager.school.id, )],
        [
            "%s (%s)" % (manager.course.name, manager.course.term),
            'education.course.index', (
                manager.school.id,
                manager.course.id,
            )
        ],
        [
            "在线作业:%s" % manager.asgn.title, 'education.asgn.index',
            (manager.school.id, manager.asgn.id)
        ], ["作业管理"]
    ])

    arrangements = json.dumps(manager.get_asgn_arrangements())

    return response.render_page(
        request, 'education/asgn/manager.tpl', {
            "course": manager.course,
            "asgn": manager.asgn,
            "school": manager.school,
            "asgn_vstatus": flag,
            "asgn_vmsg": msg,
            "page_name": "MANAGER",
            "arrangements": arrangements
        })
Ejemplo n.º 3
0
def asgn_index(request, sid, aid):
    """
    作业首页
    :param request:
    :param sid:
    :param aid: aid
    :return:
    """
    wejudge_session = WeJudgeEducationSession(request)  # 创建会话
    response = WeJudgeResponse(wejudge_session)  # 创建响应

    manager = libs.EducationAsgnController(request, response, sid)
    manager.get_asgn(aid)

    manager.login_check()  # 登录检查
    manager.check_assistant()  # 助教提权
    flag, dec = manager.check_asgn_visit()  # 作业访问权限检查
    report = manager.get_asgn_report()  # 获取/创建实验报告

    arrangements = [
        arr.json(items=[
            'id', 'name', 'day_of_week', 'start_week', 'end_week', 'odd_even',
            'start_section', 'end_section', 'start_time', 'end_time'
        ]) for arr in manager.course.arrangements.all()
    ]

    response.set_navlist([
        const.apps.EDUCATION,
        [manager.school.name, 'education.school', (manager.school.id, )],
        [
            "%s (%s)" % (manager.course.name, manager.course.term),
            'education.course.index', (
                manager.school.id,
                manager.course.id,
            )
        ], ["在线作业:%s" % manager.asgn.title]
    ])
    return response.render_page(
        request, 'education/asgn/index.tpl', {
            "course": manager.course,
            "asgn": manager.asgn,
            "school": manager.school,
            "arrangements": json.dumps(arrangements),
            "asgn_vstatus": flag,
            "asgn_vdec": int(dec),
            "asgn_report": report,
            "page_name": "INDEX",
            "hide_breadcrumb": True
        })
Ejemplo n.º 4
0
def asgn_statistic(request, sid, aid):
    """
    作业管理
    :param request:
    :param sid
    :param aid: aid
    :return:
    """
    wejudge_session = WeJudgeEducationSession(request)  # 创建会话
    response = WeJudgeResponse(wejudge_session)  # 创建响应

    manager = libs.EducationAsgnController(request, response, sid)
    manager.get_asgn(aid)

    # 检查访问权限
    manager.login_check()
    manager.check_assistant()  # 助教提权
    flag, msg = manager.check_asgn_visit()

    if flag != 2:
        raise WeJudgeError(3120)

    response.set_navlist([
        const.apps.EDUCATION,
        [manager.school.name, 'education.school', (manager.school.id, )],
        [
            "%s (%s)" % (manager.course.name, manager.course.term),
            'education.course.index', (
                manager.school.id,
                manager.course.id,
            )
        ],
        [
            "在线作业:%s" % manager.asgn.title, 'education.asgn.index',
            (manager.school.id, manager.asgn.id)
        ], ["统计与分析"]
    ])

    return response.render_page(
        request, 'education/asgn/statistic.tpl', {
            "course": manager.course,
            "asgn": manager.asgn,
            "school": manager.school,
            "asgn_vstatus": flag,
            "asgn_vmsg": msg,
            "page_name": "STATISTIC",
        })
Ejemplo n.º 5
0
def save_asgn_report_impression(request, sid, aid):
    """
    作业题目列表接口
    :param request:
    :param aid: asgn id
    :return:
    """
    wejudge_session = WeJudgeEducationSession(request)  # 创建会话
    response = WeJudgeResponse(wejudge_session)  # 创建响应

    manager = libs.EducationAsgnController(request, response, sid)
    manager.get_asgn(aid)
    manager.check_assistant()

    result = manager.save_asgn_report_impression()

    return response.json(WeJudgeResult(result))
Ejemplo n.º 6
0
def upload_asgn_report_attchment(request, sid, aid):
    """
    实验报告上传附件
    :param request:
    :param aid: asgn id
    :param sid: school id
    :return:
    """
    wejudge_session = WeJudgeEducationSession(request)  # 创建会话
    response = WeJudgeResponse(wejudge_session)  # 创建响应

    manager = libs.EducationAsgnController(request, response, sid)
    manager.get_asgn(aid)

    result = manager.upload_asgn_report_attchment()

    return response.json(WeJudgeResult(result, msg="刷新页面后查看"))
Ejemplo n.º 7
0
def get_statistic_data(request, sid, aid):
    """
    重算作业的数据
    :param request:
    :param aid: asgn id
    :param sid: school id
    :return:
    """
    wejudge_session = WeJudgeEducationSession(request)  # 创建会话
    response = WeJudgeResponse(wejudge_session)  # 创建响应

    manager = libs.EducationAsgnController(request, response, sid)
    manager.get_asgn(aid)

    result = manager.get_statistic_data()

    return response.json(WeJudgeResult(result))
Ejemplo n.º 8
0
def zip_the_codes(request, sid, aid):
    """
    
    :param request: 
    :param sid: school id
    :param aid: asgn id
    :return: 
    """
    wejudge_session = WeJudgeEducationSession(request)  #创建目录
    response = WeJudgeResponse(wejudge_session)  #创建相应

    manager = libs.EducationAsgnController(request, response, sid)
    manager.get_asgn(aid)

    result = manager.asgn_zip_the_codes(aid)

    return result
Ejemplo n.º 9
0
def get_problems_choosed(request, sid, aid):
    """
    获取作业的已选择题目
    :param request:
    :param aid: asgn id
    :param sid: school id
    :return:
    """
    wejudge_session = WeJudgeEducationSession(request)  # 创建会话
    response = WeJudgeResponse(wejudge_session)  # 创建响应

    manager = libs.EducationAsgnController(request, response, sid)
    manager.get_asgn(aid)

    result = manager.get_problems_choosed()

    return response.json(WeJudgeResult(result))
Ejemplo n.º 10
0
def refresh_asgn_datas(request, sid, aid):
    """
    重算作业的数据
    :param request:
    :param aid: asgn id
    :param sid: school id
    :return:
    """
    wejudge_session = WeJudgeEducationSession(request)  # 创建会话
    response = WeJudgeResponse(wejudge_session)  # 创建响应

    manager = libs.EducationAsgnController(request, response, sid)
    manager.get_asgn(aid)

    result = manager.refresh_asgn_datas()

    return response.json(WeJudgeResult(result, msg="重算工作已经发起,请稍等"))
Ejemplo n.º 11
0
def get_asgn_settings(request, sid, aid):
    """
    获取作业设置信息
    :param request:
    :param aid: asgn id
    :return:
    """
    wejudge_session = WeJudgeEducationSession(request)  # 创建会话
    response = WeJudgeResponse(wejudge_session)  # 创建响应

    manager = libs.EducationAsgnController(request, response, sid)
    manager.get_asgn(aid)
    manager.check_assistant()

    result = manager.get_asgn_settings()

    return response.json(WeJudgeResult(result))
Ejemplo n.º 12
0
def asgn_report(request, sid, aid, rid=None):
    """
    实验报告
    :param request:
    :param sid:
    :param aid: aid
    :param rid: rid
    :return:
    """
    wejudge_session = WeJudgeEducationSession(request)  # 创建会话
    response = WeJudgeResponse(wejudge_session)  # 创建响应

    manager = libs.EducationAsgnController(request, response, sid)
    manager.get_asgn(aid)

    manager.login_check()  # 登录检查
    manager.check_assistant()  # 助教提权
    flag, dec = manager.check_asgn_visit()  # 作业访问权限检查
    report = manager.get_asgn_report(rid)  # 获取实验报告

    response.set_navlist([
        const.apps.EDUCATION,
        [manager.school.name, 'education.school', (manager.school.id, )],
        [
            "%s (%s)" % (manager.course.name, manager.course.term),
            'education.course.index', (
                manager.school.id,
                manager.course.id,
            )
        ],
        [
            "在线作业:%s" % manager.asgn.title, 'education.asgn.index',
            (manager.school.id, manager.asgn.id)
        ], ["%s的实验报告" % report.author.realname]
    ])
    return response.render_page(
        request, 'education/asgn/report.tpl', {
            "course": manager.course,
            "asgn": manager.asgn,
            "school": manager.school,
            "asgn_vstatus": flag,
            "asgn_vdec": int(dec),
            "asgn_report": report,
            "page_name": "REPORT"
        })
Ejemplo n.º 13
0
def get_reports_list(request, sid, aid):
    """
    获取实验报告列表
    :param request:
    :param aid: asgn id
    :param sid: school id
    :return:
    """
    wejudge_session = WeJudgeEducationSession(request)  # 创建会话
    response = WeJudgeResponse(wejudge_session)  # 创建响应

    manager = libs.EducationAsgnController(request, response, sid)
    manager.get_asgn(aid)
    manager.check_assistant()

    result = manager.get_reports_list()

    return response.json(WeJudgeResult(result))
Ejemplo n.º 14
0
def delete_asgn(request, sid, aid):
    """
    删除作业
    :param request:
    :param aid: asgn id
    :param sid: school id
    :return:
    """
    wejudge_session = WeJudgeEducationSession(request)  # 创建会话
    response = WeJudgeResponse(wejudge_session)  # 创建响应

    manager = libs.EducationAsgnController(request, response, sid)
    manager.get_asgn(aid)

    course_id = manager.delete_asgn()

    return HttpResponseRedirect(
        reverse('education.course.index', args=(manager.school.id, course_id)))
Ejemplo n.º 15
0
def delete_visit_requirement(request, sid, aid):
    """
    删除调课请求信息
    :param request:
    :param aid: asgn id
    :param sid: school id
    :return:
    """
    wejudge_session = WeJudgeEducationSession(request)  # 创建会话
    response = WeJudgeResponse(wejudge_session)  # 创建响应

    manager = libs.EducationAsgnController(request, response, sid)
    manager.get_asgn(aid)
    manager.check_assistant()

    result = manager.delete_visit_requirement()

    return response.json(WeJudgeResult(result))
Ejemplo n.º 16
0
def save_problem_choosing(request, sid, aid):
    """
    保存作业选题
    :param request:
    :param aid: asgn id
    :param sid: school id
    :return:
    """
    wejudge_session = WeJudgeEducationSession(request)  # 创建会话
    response = WeJudgeResponse(wejudge_session)  # 创建响应

    manager = libs.EducationAsgnController(request, response, sid)
    manager.get_asgn(aid)
    manager.check_assistant()

    result = manager.save_problem_choosing()

    return response.json(WeJudgeResult(result))
Ejemplo n.º 17
0
def save_asgn_report_checkup_batch(request, sid, aid):
    """
    批量保存作业的批改信息
    :param request:
    :param aid: asgn id
    :param sid: school id
    :return:
    """
    wejudge_session = WeJudgeEducationSession(request)  # 创建会话
    response = WeJudgeResponse(wejudge_session)  # 创建响应

    manager = libs.EducationAsgnController(request, response, sid)
    manager.get_asgn(aid)
    manager.check_assistant()

    result = manager.save_asgn_report_checkup_batch()

    return response.json(WeJudgeResult(result))
Ejemplo n.º 18
0
def asgn_judge_status_list(request, sid, aid):
    """
    获取整个作业评测状态
    :param request:
    :param aid:   Asgn ID
    :return:
    """

    wejudge_session = WeJudgeEducationSession(request)  # 创建会话
    response = WeJudgeResponse(wejudge_session)  # 创建响应

    manager = libs.EducationAsgnController(request, response, sid)
    manager.get_asgn(aid)
    manager.check_assistant()

    listdata = manager.get_judge_status()

    return response.json(WeJudgeResult(listdata))
Ejemplo n.º 19
0
def download_asgn_report_attchment(request, sid, aid, rid):
    """
    下载实验报告的附件
    :param request:
    :param aid: asgn id
    :param sid: school id
    :param rid: report id
    :return:
    """
    wejudge_session = WeJudgeEducationSession(request)  # 创建会话
    response = WeJudgeResponse(wejudge_session)  # 创建响应

    manager = libs.EducationAsgnController(request, response, sid)
    manager.get_asgn(aid)

    response = manager.download_asgn_report_attchment(rid)

    return response
Ejemplo n.º 20
0
def remove_asgn_problem(request, sid, aid, pid):
    """
    移除作业题目关联
    :param request:
    :param sid:
    :param aid: asgn id
    :param pid: aproblem id
    :return:
    """
    wejudge_session = WeJudgeEducationSession(request)  # 创建会话
    response = WeJudgeResponse(wejudge_session)  # 创建响应

    manager = libs.EducationAsgnController(request, response, sid)
    manager.get_asgn(aid)
    manager.get_problem(pid)
    manager.check_assistant()

    result = manager.remove_asgn_problem()

    return response.json(WeJudgeResult(result))