コード例 #1
0
def close_class():
    try:
        data = request.get_json()
        user_id = int(data.get("user_id"))
        class_id = int(data.get("class_id"))
        user = User.query.filter_by(id=user_id).first()
        if not user.is_teacher:
            return responseError(Responses.AUTHORIZATION_ERROR)
        found_class = Class.query.get(class_id)
        db.session.delete(found_class)
        db.session.commit()
        return responseSuccess(Responses.OPERATION_SUCCESS)
    except Exception as e:
        print(e)
        db.session.rollback()
        return responseSuccess(Responses.PARAMETERS_ERROR)
コード例 #2
0
def add_single_std():
    try:
        data = request.get_json()
        user_id = int(data.get("user_id"))
        class_id = int(data.get("class_id"))
        # 用户账号
        account = data.get("account")
        # 用户名
        username = data.get("username")
        user = User.query.filter_by(id=user_id).first()
        if not user.is_teacher:
            return responseError(Responses.AUTHORIZATION_ERROR)
        classes = Class.query.get(class_id)
        u = User.query.filter_by(account=account, username=username)
        # 若要添加的学生不存在则添加进User表后再加入班级
        if u is None:
            new_user = User(account=account, username=username)
            # 初始密码可设置
            new_user.set_password("2020")
            db.session.add(new_user)
            # 先插入用户
            db.session.commit()
            found_user = User.query.filter_by(account=account,
                                              username=username)
            # 在加入班级关联
            classes.stds.append(found_user)
            db.session.commit()
        else:
            classes.stds.append(u)
            db.session.commit()
        return responseSuccess(Responses.OPERATION_SUCCESS)
    except Exception as e:
        print(e)
        db.session.rollback()
        return responseError(Responses.PARAMETERS_ERROR)
コード例 #3
0
def submit_work():
    try:
        data = request.get_json()
        # 提交用户
        user_id = int(data.get("user_id"))
        # 作业id
        assignment_id = int(data.get("assignment_id"))
        # 提交内容
        content = data.get("content")
        # 如果要判断答案,则先找到Assignment对象,然后获取answer,与用户的提交内容选择题部分判断
        # 然后把分数加到score

        # 查看是否已存在提交记录
        fs = FinishStatus.query.filter_by(assignment_id=assignment_id,
                                          finish_user_id=user_id).first()
        if fs is not None:
            # 存在提交记录则更新内容和提交时间
            fs.finish_content = content
            fs.finish_time = datetime.datetime.utcnow
        else:
            # 否则构造提交记录并插入
            fs = FinishStatus(assignment_id=assignment_id,
                              finish_user_id=user_id,
                              finish_content=content)
            db.session.add(fs)
        db.session.commit()
        return responseSuccess(Responses.OPERATION_SUCCESS)
    except Exception as e:
        print(e)
        db.session.rollback()
        return responseError(Responses.PARAMETERS_ERROR)
コード例 #4
0
ファイル: course.py プロジェクト: sujieyang/West2
def create_sc():
    try:
        data = request.get_json()
        title = data.get("title")
        # 接受视频文件
        movie_file = request.files.get("file")
        # 生成随机文件名
        filename = random_filename(movie_file.filename)
        # 生成文件保存路径
        save_path = '/%s' % filename
        # 保存文件
        movie_file.save(save_path)
        # 该视频属于的大章节
        fc_id = data.get("fc_id")
        fc_id = int(fc_id.split("-")[1])
        # 构造二级目录
        new_sc = SecondCategory(name=title,
                                parent_category_id=fc_id,
                                movie=save_path)
        db.session.add(new_sc)
        db.session.commit()
        return responseSuccess(Responses.OPERATION_SUCCESS)
    except Exception as e:
        print(e)
        db.session.rollback()
        return responseError(Responses.PARAMETERS_ERROR)
コード例 #5
0
ファイル: course.py プロジェクト: sujieyang/West2
def del_fc():
    try:
        data = request.get_json()
        # fc_id 是 1-XX 的形式
        # 获得要删除的章节的id
        fc_id = data.get("fc_id")
        fc_id = int(fc_id.split("-")[1])
        fc = FirstCategory.query.get(fc_id)
        # 如果该章节是第一章
        if fc.is_first_category:
            # 若总共只有一章则什么也不做
            if fc.next_category_id != 0:
                # 否则该章节的下一章设为链表头
                next_fc = FirstCategory.query.get(fc.next_category_id)
                next_fc.is_first_category = True
        # 如果该章节不是第一章
        else:
            # 找到该章节的上一章
            pre_fc = FirstCategory.query.filter_by(
                next_category_id=fc.id).first()
            # 上一章的指针指向要删除的章节的下一章
            pre_fc.next_category_id = fc.next_category_id
        # 删除章节
        db.session.delete(fc)
        db.session.commit()
        return responseSuccess(Responses.OPERATION_SUCCESS)
    except Exception as e:
        print(e)
        db.session.rollback()
        return responseError(Responses.PARAMETERS_ERROR)
コード例 #6
0
ファイル: course.py プロジェクト: sujieyang/West2
def create_first_category():
    try:
        data = request.get_json()
        class_id = int(data.get("class_id"))
        title = data.get("title")
        # 若before为"front",则在最前加入
        # 若before不为空,则在指定位置后插入
        # 若before为"last",则在最后加入
        before = data.get("before")
        user_class = Class.query.get(class_id)
        # 要插入的章节的id
        new_fc_id = max([c.id for c in FirstCategory.query.all()]) + 1
        # 在最前面加入
        if before.strip() == "front":
            next_id = 0
            # 判断该班级是否已存在章节
            fc = FirstCategory.query.with_parent(user_class).filter_by(
                is_first_category=True).first()
            if fc is not None:
                # 存在已有章节,则插到最前
                # 修改第一个章节
                fc.is_first_category = False
                next_id = fc.id
            # 若不存在已有章节,则该章节的next章节id为0
            # 构造章节加入,该章节为第一章,下一章为原先的第一章
            new_fc = FirstCategory(name=title,
                                   belong_class_id=class_id,
                                   next_category_id=next_id,
                                   is_first_category=True)
        elif before.strip() == "last":
            # 找到最后一个章节
            lc = FirstCategory.query.with_parent(user_class).filter_by(
                next_category_id=0).first()
            # 最后一个章节的下一章为该章节的id
            lc.next_category_id = new_fc_id
            # 构造章节加入,该章节为最后一章 / 第一章
            new_fc = FirstCategory(name=title,
                                   belong_class_id=class_id,
                                   next_category_id=0)
        else:
            # 插入到指定章节后
            # 找到指定章节
            found_fc = FirstCategory.query.filter_by(belong_class_id=class_id,
                                                     name=before).first()
            # 保存原来的下一个章节id
            next = found_fc.next_category_id
            found_fc.next_category_id = new_fc_id
            # 构造新章节,该章节为id=next的章节的后面一章
            new_fc = FirstCategory(name=title,
                                   belong_class_id=class_id,
                                   next_category_id=next)
        # 插入数据
        db.session.add(new_fc)
        db.session.commit()
        return responseSuccess(Responses.OPERATION_SUCCESS)
    except Exception as e:
        print(e)
        db.session.rollback()
        return responseError(Responses.PARAMETERS_ERROR)
コード例 #7
0
def del_talking():
    try:
        data = request.get_json()
        talking_id = int(data.get("talking_id"))
        t = Talkings.query.get(talking_id)
        db.session.delete(t)
        db.session.commit()
        return responseSuccess(Responses.OPERATION_SUCCESS)
    except Exception as e:
        print(e)
        db.session.rollback()
        return responseError(Responses.PARAMETERS_ERROR)
コード例 #8
0
ファイル: course.py プロジェクト: sujieyang/West2
def del_work():
    try:
        data = request.get_json()
        assignment_id = int(data.get("assignment_id"))
        assign = Assignment.query.get(assignment_id)
        os.remove(assign.content)
        db.session.delete(assign)
        db.session.commit()
        return responseSuccess(Responses.OPERATION_SUCCESS)
    except Exception as e:
        print(e)
        db.session.rollback()
        return responseError(Responses.PARAMETERS_ERROR)
コード例 #9
0
ファイル: course.py プロジェクト: sujieyang/West2
def rename_work():
    try:
        data = request.get_json()
        name = data.get("name")
        assignment_id = int(data.get("assignment_id"))
        assign = Assignment.query.get(assignment_id)
        assign.name = name
        db.session.commit()
        return responseSuccess(Responses.OPERATION_SUCCESS)
    except Exception as e:
        print(e)
        db.session.rollback()
        return responseError(Responses.PARAMETERS_ERROR)
コード例 #10
0
ファイル: course.py プロジェクト: sujieyang/West2
def rename_fc():
    try:
        data = request.get_json()
        name = data.get("name")
        fc_id = data.get("fc_id")
        fc_id = int(fc_id.split("-")[1])
        fc = FirstCategory.query.get(fc_id)
        fc.name = name
        db.session.commit()
        return responseSuccess(Responses.OPERATION_SUCCESS)
    except Exception as e:
        print(e)
        db.session.rollback()
        return responseError(Responses.PARAMETERS_ERROR)
コード例 #11
0
def delete_comments():
    try:
        data = request.get_json()
        user_id = int(data.get("user_id"))
        comment_id = int(data.get("comment_id"))
        comments = Comments.query.filter_by(from_user_id=user_id,
                                            id=comment_id).first()
        db.session.delete(comments)
        db.session.commit()
        return responseSuccess(Responses.OPERATION_SUCCESS)
    except Exception as e:
        print(e)
        db.session.rollback()
        return responseError(Responses.PARAMETERS_ERROR)
コード例 #12
0
ファイル: course.py プロジェクト: sujieyang/West2
def rename_sc():
    try:
        data = request.get_json()
        # sc_id 是 2-XX 的形式
        # 获得要删除的章节的id
        sc_id = data.get("sc_id")
        sc_id = int(sc_id.split("-")[1])
        name = data.get("name")
        sc = SecondCategory.query.get(sc_id)
        sc.name = name
        db.session.commit()
        return responseSuccess(Responses.OPERATION_SUCCESS)
    except Exception as e:
        print(e)
        db.session.rollback()
        return responseError(Responses.PARAMETERS_ERROR)
コード例 #13
0
ファイル: course.py プロジェクト: sujieyang/West2
def correct_work():
    try:
        data = request.get_json()
        # 获得要批改的某一份提交内容对象的id
        finish_id = int(data.get("finish_id"))
        # 简答题的得分
        score = int(data.get("score"))
        fs = FinishStatus.query.get(finish_id)
        fs.is_correct = 1
        # 得分加到成绩上
        fs.score += score
        db.session.commit()
        return responseSuccess(Responses.OPERATION_SUCCESS)
    except Exception as e:
        print(e)
        db.session.rollback()
        return responseError(Responses.PARAMETERS_ERROR)
コード例 #14
0
ファイル: course.py プロジェクト: sujieyang/West2
def del_sc():
    try:
        data = request.get_json()
        # sc_id 是 2-XX 的形式
        # 获得要删除的章节的id
        sc_id = data.get("sc_id")
        sc_id = int(sc_id.split("-")[1])
        sc = SecondCategory.query.get(sc_id)
        # 删除小章节对应的视频
        os.remove(sc.movie)
        db.session.delete(sc)
        db.session.commit()
        return responseSuccess(Responses.OPERATION_SUCCESS)
    except Exception as e:
        print(e)
        db.session.rollback()
        return responseError(Responses.PARAMETERS_ERROR)
コード例 #15
0
def post_discussion():
    try:
        data = request.get_json()
        user_id = int(data.get("user_id"))
        class_id = int(data.get("class_id"))
        title = data.get("title")
        content = data.get("content")
        New_talkings = Talkings(title=title,
                                content=content,
                                belong_class_id=class_id,
                                publish_user_id=user_id)
        db.session.add(New_talkings)
        db.session.commit()
        return responseSuccess(Responses.OPERATION_SUCCESS)
    except Exception as e:
        print(e)
        return responseError(Responses.PARAMETERS_ERROR)
コード例 #16
0
def send_comment():
    try:
        data = request.get_json()
        user_id = int(data.get("user_id"))
        talking_id = int(data.get("talking_id"))
        content = data.get("content")
        comment = Comments(content=content,
                           from_user_id=user_id,
                           talking_id=talking_id,
                           replied_id=None,
                           is_reply=False)
        db.session.add(comment)
        db.session.commit()
        return responseSuccess(Responses.OPERATION_SUCCESS)
    except Exception as e:
        print(e)
        db.session.rollback()
        return responseError(Responses.PARAMETERS_ERROR)
コード例 #17
0
ファイル: course.py プロジェクト: sujieyang/West2
def del_notice():
    try:
        data = request.get_json()
        user_id = int(data.get("user_id"))
        class_id = int(data.get("class_id"))
        notice_id = int(data.get("notice_id"))
        user = User.query.get(user_id)
        notice = Notices.query.get(notice_id)
        # 1.不是老师则无法删除
        # 2.是老师,但删除的不是该班级下的公告则失败
        if not user.is_teacher or notice.belong_class_id != class_id:
            return responseError(Responses.AUTHORIZATION_ERROR)
        db.session.delete(notice)
        db.session.commit()
        return responseSuccess(Responses.OPERATION_SUCCESS)
    except Exception as e:
        print(e)
        db.session.rollback()
        return responseError(Responses.PARAMETERS_ERROR)
コード例 #18
0
def update_password():
    try:
        user_data = request.get_json()
        user_id = int(user_data.get("user_id"))
        old_password = user_data.get("old_password")
        new_password1 = user_data.get("new_password1")
        new_password2 = user_data.get("new_password2")
        users = User.query.filter_by(id=user_id).first()
        # 密码不等
        if not users.check_password(old_password):
            return responseError(Responses.INCORRECT_PASSWORD)
        # 两次密码不一致
        elif new_password1 != new_password2:
            return responseError(Responses.NOT_SAME_PASSWORD)
        else:
            users.set_password(new_password1)
            db.session.commit()
            return responseSuccess(Responses.OPERATION_SUCCESS)
    except Exception as e:
        print(e)
        return responseError(Responses.PARAMETERS_ERROR)
コード例 #19
0
ファイル: course.py プロジェクト: sujieyang/West2
def post_notices():
    try:
        data = request.get_json()
        title = data.get("title")
        content = data.get("content")
        class_id = int(data.get("class_id"))
        user_id = int(data.get("user_id"))
        Tech = User.query.filter_by(id=user_id).first()
        if not Tech.is_teacher:
            return responseError(Responses.AUTHORIZATION_ERROR)
        else:
            notice = Notices(title=title,
                             content=content,
                             belong_class_id=class_id)
            db.session.add(notice)
            db.session.commit()
            return responseSuccess(Responses.OPERATION_SUCCESS)
    except Exception as e:
        print(e)
        db.session.rollback()
        return responseError(Responses.PARAMETERS_ERROR)
コード例 #20
0
def del_selected_stds():
    try:
        data = request.get_json()
        class_id = int(data.get("class_id"))
        # 要删除的学生id列表
        selected_stds = data.get("selected_stds")
        user_id = int(data.get("user_id"))
        user_class = Class.query.get(class_id)
        # 判断要操作的用户是不是老师
        if not User.query.filter_by(id=user_id).first().is_teacher:
            return responseError(Responses.AUTHORIZATION_ERROR)
        for std in selected_stds:
            student = User.query.get(int(std))
            # 解除该学生和班级的关联
            user_class.stds.remove(student)
            db.session.commit()
        return responseSuccess(Responses.OPERATION_SUCCESS)
    except Exception as e:
        print(e)
        db.session.rollback()
        return responseError(Responses.PARAMETERS_ERROR)
コード例 #21
0
def apply_class():
    try:
        data = request.get_json()
        user_id = int(data.get("user_id"))
        class_name = data.get("class_name")
        user = User.query.filter_by(id=user_id).first()
        if not user.is_teacher:
            return responseError(Responses.AUTHORIZATION_ERROR)
        # 若为空,则默认值
        class_info = data.get("class_info")
        if class_info.strip() == "":
            c = Class(class_name=class_name)
        else:
            c = Class(class_name=class_name, info=class_info)
        c.stds.append(user)
        db.session.add(c)
        db.session.commit()
        return responseSuccess(Responses.OPERATION_SUCCESS)
    except Exception as e:
        print(e)
        db.session.rollback()
        return responseError(Responses.PARAMETERS_ERROR)
コード例 #22
0
ファイル: auth.py プロジェクト: sujieyang/West2
def logout():
    try:
        # 清空session
        session["token"] = None
        session["user_id"] = None
        data = request.get_json()
        user_id = int(data.get("user_id"))
        # 计算时间差
        logout_date = datetime.datetime.now()
        login_date = session.get("login_date", datetime.datetime.now())
        # 时间差
        result = (logout_date - login_date)
        diff_hours = int(result.days * 24 + result.seconds / 3600 + 1)
        user = User.query.get(user_id)
        # 更新用户学习时长
        user.total_study += diff_hours
        db.session.commit()
        return responseSuccess(Responses.OPERATION_SUCCESS)
    except Exception as e:
        print(e)
        db.session.rollback()
        return responseError(Responses.PARAMETERS_ERROR)