Пример #1
0
    def get(self):
        userId = request.args.get("userId")

        practiceCount = db.getOne(
            """
            select practice_count from User where user_id=%s;
            """, (userId,)
        )['practice_count']

        if practiceCount < 5:
            page = 0
            res = db.getAll(
                """
                select * from StudentPractice where student_id=%s;
                """, (userId,)
            )
        else:
            page = practiceCount/5+1 if practiceCount%5 else practiceCount/5
            res = db.getSome(
                """
                select * from StudentPractice where student_id=%s;
                """, 5, (userId,)
            )

        respData = {
            "state": "success",
            "count": practiceCount if practiceCount<5 else 5,
            "page": page,
            "detail": res
        }

        return respData
Пример #2
0
    def post(self):
        data = request.get_json() or request.form
        userId = data['userId']
        title = data['title']
        problemList = data['problems']
        relation = data['relation']
        topicId = data['topicId']
        sectionId = data['sectionId']
        courseId = data['courseId']

        practiceId = get_id()

        db.insertOne(
            """
            insert into Practice (practice_id, title, teacher_id, relation, topic_id, section_id, course_id)
            values (%s, %s, %s, %s, %s, %s, %s);
            """, (practiceId, title, userId, relation, topicId, sectionId, courseId)
        )

        position = 0

        for eachp in problemList:
            problemId = get_id()

            content = eachp['content']
            choices = eachp['choices']
            answer = eachp['answer']

            db.insertOne(
                """
                insert into Problem (problem_id, position, content, choices, answer, practice_id)
                values (%s, %s, %s, %s, %s, %s);
                """, (problemId, position, content, choices, answer, practiceId)
            )

            position += 1

        studentList = db.getAll(
            """
            select student_id from StudnetCourse where course_id=%s;
            """, (courseId)
        )

        for each in studentList:
            db.insertOne(
                """
                insert into StudentPractice (student_id, practice_id, status)
                values (%s, %s, %s);
                """, (each['student_id'], practiceId, 0)
            )
            db.modify(
                """
                update User set practice_count=practice_count+1 where user_id=%s;
                """, (each['student_id'],)
            )

        return {
            "state": "success"
        }
Пример #3
0
    def get(self):
        # data = request.args.get("userId")
        userId = request.args.get("userId")
        character = request.args.get("character")

        # Query Statements
        res = db.getOne(
            """
            select course_count from User where user_id=%s;
            """,
            (userId,)
        )['course_count']
        if res:
            if res <= 5:
                page = 0
                courseRes = db.getAll(
                    """
                    select * from Course where teacher_id=%s;
                    """,
                    (userId,)
                )
                courseCount = res
            else:
                page = res/5+1 if res%5 else res/5
                courseRes = db.getSome(
                    """
                    select * from Course where teacher_id=%s;
                    """,
                    5, (userId,)
                )
                courseCount = 5

        courseDetail = []
        for i in range(0, courseCount):
            courseDetail.append({
                "title": courseRes[i]['title'],
                "count": [courseRes[i]['topic_count'], courseRes[i]['section_count'], courseRes[i]['practice_count'], courseRes[i]['student_count']]
            })

        respData = {
            "state": "success",
            "count": courseCount,
            "page": page,
            "courses": courseDetail
        }
        return respData
Пример #4
0
    def delete(self):
        topicId = request.args.get("topicId")
        courseId = request.args.get("courseId")

        res = db.delete(
            """
            delete from Topic where topic_id=%s;
            """,
            (topicId,)
        )

        if res:
            sectionIds = db.getAll(
                """
                select section_id from Section where topic_id=%s;
                """,
                (topicId,)
            )
            cnt = len(sectionIds)
            db.delete(
                """
                delete from Section where topic_id=%s;
                """,
                (topicId,)
            )
            for i in range(0, cnt):
                db.delete(
                    """
                    delete from Entity where section_id=%s;
                    """,
                    (sectionIds[i]['section_id'],)
                )
            db.modify(
                """
                update Course set topic_count=topic_count-1, section_count=section_count-%s;
                """
            )

            return {
                "state": "success"
            }
Пример #5
0
    def get(self):
        practiceId = data['practiceId']
        userId = data['userId']

        draft = db.getOne(
            """
            select * from StudentPractice where student_id=%s and practice_id=%s;
            """, (userId, practiceId)
        )

        problemSet = db.getAll(
            """
            select * from Problem where practice_id=%s;
            """, (practiceId,)
        )

        respData = {
            "state": "success",
            "problemSet": problemSet,
            "draft": draft
        }

        return respData
Пример #6
0
    def get(self):
        userId = request.args.get("userId")
        character = request.args.get("character")

        # Query Statements
        res = db.getOne(
            """
            select course_count from User where user_id=%s;
            """,
            (userId,)
        )['course_count']

        if res:
            if res <= 5:
                page = 0
                # courseRes = db.getAll(
                #     """
                #     select * from Course where course_id in (
                #         select course_id from StudentCourse where student_id=%s
                #     );
                #     """,
                #     (userId,)
                # )
                # User JOIN instead of Sub-query --> faster
                courseRes = db.getAll(
                    """
                    select a.* from Course a inner join StudentCourse b
                    on a.course_id=b.course_id
                    where b.student_id=%s;
                    """,
                    (userId,)
                )
                courseCount = res
            else:
                page = res/5+1 if res%5 else res/5
                courseRes = db.getSome(
                    """
                    select a.*, b.status, b.last_section_id from Course a inner join StudentCourse b
                    on a.course_id=b.course_id
                    where b.student_id=%s;
                    """,
                    5, (userId,)
                )
                courseCount = 5

        courseDetail = []
        for i in range(0, courseCount):
            courseId = course[i]['course_id']
            teacherId = course[i]['teacher_id']
            teacherRes = db.getOne(
                """
                select name, icon from User where user_id=%s;
                """,
                (teacherId,)
            )
            if courseRes[i]['section_id'] != '':
                sectionTitle = db.getOne(
                    """
                    select title from Section where section_id=%s;
                    """,
                    (courseRes[i]['section_id'],)
                )
            else:
                sectionTitle = ''

            courseDetail.append({
                "title": courseRes[i]['title'],
                "description": courseRes[i]['description'],
                "id": courseRes[i]['course_id'],
                "teacher": {
                    "icon": teacherRes['icon']
                    "name": teacherRes['name']
                },
                "last": {
                    "title": sectionTitle,
                    "id": courseRes[i]['section_id']
                }
            })

        respData = {
            "state": "success",
            "count": courseCount,
            "page": page,
            "courses": courseDetail
        }
        return respData