예제 #1
0
def repository(request, sid, cid):
    """
    教学系统资源仓库列表
    :param request:
    :param cid: Course Id
    :param sid:
    :return:
    """
    wejudge_session = WeJudgeEducationSession(request)  # 创建会话
    response = WeJudgeResponse(wejudge_session)  # 创建响应

    manager = libs.EducationController(request, response, sid)
    manager.get_course(cid)

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

    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)
        ], ["教学资源仓库"]
    ])
    return response.render_page(
        request, 'education/course/repository.tpl', {
            "course": manager.course,
            "school": manager.school,
            "page_name": "REPOSITORY"
        })
예제 #2
0
def arrangements(request, sid, cid):
    """
    教学系统课程排课管理
    :param request:
    :param cid: Course Id
    :param sid:
    :return:
    """
    wejudge_session = WeJudgeEducationSession(request)  # 创建会话
    response = WeJudgeResponse(wejudge_session)  # 创建响应

    manager = libs.EducationController(request, response, sid)
    manager.get_course(cid)

    # 检查访问权限
    manager.login_check()
    manager.check_assistant()  # 助教提权
    # 检查课程访问权限
    manager.check_course_visit()
    manager.check_user_privilege(2)

    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)
        ], ["排课管理"]
    ])
    return response.render_page(
        request, 'education/course/arrangements.tpl', {
            "course": manager.course,
            "school": manager.school,
            "page_name": "ARRANGEMENTS"
        })
예제 #3
0
def management(request, sid):

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

    manager = libs.EducationController(request, response, sid)

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

    response.set_navlist([
        const.apps.EDUCATION,
        [manager.school.name, 'education.school', (manager.school.id, )],
        ['学校管理']
    ])

    academies = [
        academy.json(items=['id', 'name'])
        for academy in manager.get_school_academies()
    ]

    return response.render_page(
        request, 'education/school/manager.tpl', {
            "school": manager.school,
            "term_list": manager.get_terms_list(),
            "now_term": manager.term,
            "WJ_EDU_ARC": system.WEJUDGE_EDU_ACCOUNT_ROLES_CALLED,
            "page_name": "MANAGER",
            "academies": json.dumps(academies)
        })
예제 #4
0
def authorize_education(request, sid):
    """
    Oauth2教学系统授权页面
    :param request:
    :return:
    """

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

    education_manager = EduLibs.EducationController(request, response, sid)

    manager = libs.Oauth2Service(request, response)
    rel, url, ctx = manager.authorize()

    response.set_navlist([
        const.apps.EDUCATION,
        [education_manager.school.name, 'education.school', (education_manager.school.id,)],
        ['WeJudge开放平台'],
        [manager.client.appname],
        ['应用授权']
    ])

    if not rel:
        ctx.update({
            "school": education_manager.school,
            "page_name": "INDEX"
        })
        return response.render_page(request, 'oauth2/authorize/education.tpl', ctx)
    else:
        return HttpResponseRedirect(url)
예제 #5
0
def school_index(request, sid):
    if not tools.is_numeric(sid):
        school = libs.EducationController.get_school_by_short_name(sid)
        return HttpResponseRedirect(
            reverse("education.school", args=[school.id]))

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

    manager = libs.EducationController(request, response, sid)

    __change_term(request, manager)

    response.set_navlist([const.apps.EDUCATION, [manager.school.name]])
    # 设置学校访问记录
    response.set_cookie('EDU_LAST_VISITED_SCHOOL', sid, expires=365 * 86400)

    academies = [
        academy.json(items=['id', 'name'])
        for academy in manager.get_school_academies()
    ]

    storage = WeJudgeStorage(system.WEJUDGE_STORAGE_ROOT.EDUCATION_STORAGE,
                             str(manager.school.id))
    if storage.exists("intro.html"):
        fp = storage.open_file("intro.html", 'r')
        index_view = fp.read()
        fp.close()
        t = Template(index_view)
        index_view = t.render(
            Context({
                "school": manager.school,
                "term_list": manager.get_terms_list(),
                "now_term": manager.term,
                "wejudge_session": manager.session
            }))
    else:
        index_view = ""

    return response.render_page(
        request, 'education/school/school.tpl', {
            "school": manager.school,
            "term_list": manager.get_terms_list(),
            "now_term": manager.term,
            "WJ_EDU_ARC": system.WEJUDGE_EDU_ACCOUNT_ROLES_CALLED,
            "page_name": "INDEX",
            "hide_breadcrumb": True,
            "academies": json.dumps(academies),
            "index_view": index_view
        })
예제 #6
0
def master_register_or_bind(request, sid):
    """
    注册或者绑定WeJudge主账户
    :param request:
    :param sid:
    :return:
    """
    wejudge_session = WeJudgeEducationSession(request)  # 创建会话
    response = WeJudgeResponse(wejudge_session)  # 创建响应

    manager = libs.EducationController(request, response, sid)
    result = manager.master_register_or_bind()

    return response.json(WeJudgeResult(msg=result))
예제 #7
0
def xls_import_account(request, sid):
    """
    导入学生账户
    :param request:
    :param sid:
    :return:
    """
    wejudge_session = WeJudgeEducationSession(request)  # 创建会话
    response = WeJudgeResponse(wejudge_session)  # 创建响应

    manager = libs.EducationController(request, response, sid)
    result = manager.xls_import_account()

    return response.json(WeJudgeResult(msg=result))
예제 #8
0
def save_school_info(request, sid):
    """
    增加/删除学年学期
    :param request:
    :param sid:
    :return:
    """
    wejudge_session = WeJudgeEducationSession(request)  # 创建会话
    response = WeJudgeResponse(wejudge_session)  # 创建响应

    manager = libs.EducationController(request, response, sid)
    result = manager.save_school_info()

    return response.json(WeJudgeResult(result))
예제 #9
0
def save_sections_data(request, sid):
    """
    保存上课时间信息
    :param request:
    :param sid:
    :return:
    """
    wejudge_session = WeJudgeEducationSession(request)  # 创建会话
    response = WeJudgeResponse(wejudge_session)  # 创建响应

    manager = libs.EducationController(request, response, sid)
    result = manager.save_sections_data()

    return response.json(WeJudgeResult(result))
예제 #10
0
def get_schools_info(request, sid):
    """
    获取学校的设置信息
    :param request:
    :param sid:
    :return:
    """
    wejudge_session = WeJudgeEducationSession(request)  # 创建会话
    response = WeJudgeResponse(wejudge_session)  # 创建响应

    manager = libs.EducationController(request, response, sid)
    result = manager.get_schools_info()

    return response.json(WeJudgeResult(result))
예제 #11
0
def delete_account(request, sid):
    """
    删除用户
    :param request:
    :param sid:
    :return:
    """
    wejudge_session = WeJudgeEducationSession(request)  # 创建会话
    response = WeJudgeResponse(wejudge_session)  # 创建响应

    manager = libs.EducationController(request, response, sid)
    result = manager.delete_account()

    return response.json(WeJudgeResult(result))
예제 #12
0
def get_account_list(request, sid):
    """
    获取学校账户列表
    :param request:
    :param sid:
    :return:
    """
    wejudge_session = WeJudgeEducationSession(request)  # 创建会话
    response = WeJudgeResponse(wejudge_session)  # 创建响应

    manager = libs.EducationController(request, response, sid)
    result = manager.get_account_list()

    return response.json(WeJudgeResult(result))
예제 #13
0
def create_course(request, sid):
    """
    创建课程
    :param request:
    :param sid:
    :return:
    """
    wejudge_session = WeJudgeEducationSession(request)  # 创建会话
    response = WeJudgeResponse(wejudge_session)  # 创建响应

    manager = libs.EducationController(request, response, sid)
    result = manager.create_course()

    return response.json(WeJudgeResult(result))
예제 #14
0
def api_course_asgn(request, sid):
    """
    教学系统首页作业和课程列表
    :param request:
    :param sid:
    :return:
    """
    wejudge_session = WeJudgeEducationSession(request)  # 创建会话
    response = WeJudgeResponse(wejudge_session)  # 创建响应

    manager = libs.EducationController(request, response, sid)
    result = manager.get_education_course_asgn_datas()

    return response.json(WeJudgeResult(result))
예제 #15
0
def change_year_terms(request, sid):
    """
    增加/删除学年学期
    :param request:
    :param sid:
    :return:
    """
    wejudge_session = WeJudgeEducationSession(request)  # 创建会话
    response = WeJudgeResponse(wejudge_session)  # 创建响应

    manager = libs.EducationController(request, response, sid)
    result = manager.change_year_terms()

    return response.json(WeJudgeResult(result))
예제 #16
0
def repository(request, sid):

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

    manager = libs.EducationController(request, response, sid)

    response.set_navlist([
        const.apps.EDUCATION,
        [manager.school.name, 'education.school', (manager.school.id, )],
        ['教学资源仓库']
    ])

    return response.render_page(request, 'education/school/repository.tpl', {
        "school": manager.school,
        "page_name": "REPOSITORY",
    })
예제 #17
0
def course(request, sid, cid):
    """
    教学系统课程信息
    :param request:
    :param cid: Course Id
    :param sid:
    :return:
    """
    wejudge_session = WeJudgeEducationSession(request)  # 创建会话
    response = WeJudgeResponse(wejudge_session)  # 创建响应

    manager = libs.EducationController(request, response, sid)
    manager.get_course(cid)

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

    response.set_navlist([
        const.apps.EDUCATION,
        [manager.school.name, 'education.school', (manager.school.id, )],
        ["%s (%s)" % (manager.course.name, manager.course.term)]
    ])

    return response.render_page(
        request, 'education/course/course.tpl', {
            "course":
            manager.course,
            "course_teachers":
            [teacher for teacher in manager.course.teacher.all()],
            "course_arrangements":
            [arrangement for arrangement in manager.course.arrangements.all()],
            "school":
            manager.school,
            "page_name":
            "INDEX"
        })