Beispiel #1
0
    def query(self):
        id = request.args.get("id") or request.form.get("id")
        #判断参数是否存在
        if not id:
            return error.error_1001()

        row = Question.QueryJoinCategory().filter(Question.id == id).first()
        question = {}
        if row:
            opts = Option.Query().filter_by(question_id=row.Question.id).all()
            options = []
            for op in opts:
                option = {
                    "id": op.id,
                    "label": op.label,
                    "content": op.content,
                    "created_time": datetime.timestamp(op.created_time)
                }
                options.append(option)
            question = {
                "id": row.Question.id,
                "content": row.Question.content,
                "type": row.Question.type,
                "category_id": row.Question.category_id,
                "category_name": row.Category.name,
                "subject": row.Category.subject,
                "right_answer": row.Question.right_answer,
                "answer_analyze": row.Question.answer_analyze,
                "options": options,
                "created_time": datetime.timestamp(row.Question.created_time)
            }

        return error.success(question)
Beispiel #2
0
	def post(self):
		form = request.form
		id = form.get("id")
		if not id:
			return error.error_1001()
		user = User.Query().filter_by(id=id).first()
		# 可以修改的信息:real_name, password, phone
		real_name = form.get("real_name")
		password = form.get("password")
		phone = form.get("phone")
		# 判断real_name是否存在
		if real_name:
			user.real_name = real_name
		# 判断password是否存在
		if password:
			user.password = bcrypt.generate_password_hash(password).decode("utf-8")
		# 判断phone是否存在
		if phone:
			phone_count = User.Query().filter(and_(User.phone == phone, User.id != id)).count()
			if phone_count:
				return error.error_1002("此手机号已存在")
			user.phone = phone

		# 提交到数据库
		db.session.add(user)
		try:
			db.session.commit()
		except:
			return error.error_1003()
		return error.success()
Beispiel #3
0
	def post(self):
		print(request.headers)
		form = request.form
		username = form.get("username")
		password = form.get("password")
		print(form)
		print(request.get_data())
		#username 和 password不能为空
		if not username or not password:
			return error.error_1001()
		user = User.Query().filter(or_(User.name==username, User.phone==username)).first()
		#判断user是否存在
		if not user:
			return error.error_1004()
		#判断密码是否正确
		if not bcrypt.check_password_hash(user.password, password):
			return error.error_1004()
		#获取uid
		uid = user.id
		#生成token
		token_str = "{0}{1}{2}".format(user.name, uid, time()).encode("utf-8")
		token = hashlib.sha1(token_str).hexdigest()
		redisClient.set(token, uid)
		redisClient.expire(token, config.redis_expireTime)
		return error.success({"token": token, "uid": uid})
Beispiel #4
0
	def post(self):
		id = request.form.get("id")
		if not id:
			return error.error_1001()
		user = User.Query().filter_by(id=id).first()
		# 判断user是否存在
		if user:
			user.is_valid = False
			db.session.add(user)
			db.session.commit()
		return error.success()
Beispiel #5
0
    def query(self):
        id = request.args.get("id") or request.form.get("id")
        if not id:
            return error.error_1001()
        # 查询数据库
        row = Paper.Query().filter_by(id=id).first()
        paper = {}
        if row:
            paper = {"id": row.id, "name": row.name, "subject": row.subject}

        return error.success(paper)
Beispiel #6
0
    def post(self):
        id = request.form.get("id")
        if not id:
            return error.error_1001()
        # 查询数据库
        question = Question.Query().filter_by(id=id).first()
        if question:
            question.is_valid = False
            db.session.add(question)
            db.session.commit()

        # 返回结果
        return error.success()
	def query(self):
		name = request.args.get("name") or request.form.get("name")
		print(name)
		if not name:
			return error.error_1001()
		row = Category.Query().filter_by(name=name).first()
		category = {}
		if row:
			category = {
				"id": row.id,
				"name": row.name,
				"subject": row.subject
			}

		return error.success(category)
Beispiel #8
0
    def post(self):
        form = request.form
        print(form)
        content = form.get("content")
        category_id = form.get("category_id")
        right_answer = form.get("right_answer")
        options = form.get("options")
        # 判断参数是否为空
        if not content or not right_answer or not category_id:
            return error.error_1001()

        # 判断right_answer是否合法
        answers_lst = right_answer.split(",")
        for answer in answers_lst:
            if answer not in ["A", "B", "C", "D", "E"]:
                return error.error_1007()

        # 判断题目是否重复
        content_count = Question.Query().filter_by(content=content).count()
        if content_count:
            return error.error_1002("题目不能重重")

        # 将题目添加到到数据库
        question = Question(form)
        db.session.add(question)
        db.session.flush()
        # 获取题目的临时id
        question_id = question.id

        # 解析选项
        options = json.loads(options)
        for r in options:
            r["question_id"] = question_id
            # 判断label是否合法
            if not r.get("label") or r.get("label") not in [
                    "A", "B", "C", "D", "E"
            ]:
                return error.error_1007()
            # 同一题目A,B,C,D,E出现两次
            label_count = Option.Query().filter_by(question_id=question_id,
                                                   label=r["label"]).count()
            print("label_count ", label_count)
            if label_count:
                return error.error_1002(r["label"] + "重复")
            option = Option(r)
            db.session.add(option)
        db.session.commit()
        return error.success()
Beispiel #9
0
    def post(self):
        id = request.form.get("id")
        if not id:
            return error.error_1001()
        # 查询该考试中是否有题目
        question_count = Question.Query().filter_by(paper_id=id).count()
        if question_count:
            return error.error_1008("此考试中有题目,不能被删除!")

        # 查询数据库
        paper = Paper.Query().filter_by(id=id).first()
        if paper:
            paper.is_valid = False
            db.session.add(paper)
            db.session.commit()
        return error.success()
Beispiel #10
0
    def post(self):
        form = request.form
        # 获取参数
        id = form.get("id")
        content = form.get("content")
        category_id = form.get("category_id")
        right_answer = form.get("right_answer")
        options = form.get("options")
        answer_analyze = form.get("answer_analyze")
        print(answer_analyze)
        #判断参数是否为空
        if not id:
            return error.error_1001()
        # 查询数据库
        question = Question.Query().filter_by(id=id).first()
        # 判断需要修改的数据
        # 修改题目标题
        if content:
            question.content = content
        # 修改题目分类
        if category_id:
            question.category_id = category_id
        # 修改正确答案
        if right_answer:
            question.right_answer = right_answer
            answers_lst = right_answer.split(",")
            length = len(answers_lst)
            type = "single"
            if length > 1:
                type = "double"
            question.type = type
        # 修改题目选项
        if options:
            options = json.loads(options)
            for op in options:
                option = Option.Query().filter_by(id=op.get("id")).first()
                option.content = op.get("content")
                option.label = op.get("label")
                db.session.add(option)
        # 修改题目答案解析
        if answer_analyze:
            question.answer_analyze = answer_analyze

        # 提交到数据库
        db.session.add(question)
        db.session.commit()
        return error.success()
	def query(self):
		id = request.args.get("id") or request.form.get("id")
		# 判断id是否为空
		if not id:
			return error.error_1001()
		# 查询数据库
		row = Category.Query().filter_by(id=id).first()
		category = {}
		if row:
			category = {
				"id": row.id,
				"name": row.name,
				"subject": row.subject,
				"chapter": row.chapter,
				"created_time": datetime.timestamp(row.created_time)
			}
		return error.success(category)
Beispiel #12
0
    def query(self):
        subject = request.args.get("subject") or request.form.get("subject")
        # 判断是否选择学科
        if not subject:
            return error.error_1001()

        # 查询用户已答题
        user_id = g.uid
        user_answered = Answer.Query().filter_by(user_id=user_id).all()
        user_answered_ids = []
        for r in user_answered:
            user_answered_ids.append(r.question_id)
        print(user_answered_ids)
        user_answered_ids_t = tuple(user_answered_ids)

        # 查出没有答过的题目
        res = Question.QueryJoinCategory().filter(
            Category.subject == subject).filter(
                not_(Question.id.in_(user_answered_ids_t))).order_by(
                    func.rand()).first()
        count = Question.QueryJoinCategory().filter(
            Category.subject == subject).filter(
                not_(Question.id.in_(user_answered_ids_t))).count()
        print(count)

        question = {}
        if res:
            # 获取题目选项
            rows = Option.Query().filter_by(question_id=res.Question.id).all()
            options = []
            for r in rows:
                option = {"id": r.id, "label": r.label, "content": r.content}
                options.append(option)

            question = {
                "id": res.Question.id,
                "type": res.Question.type,
                "content": res.Question.content,
                "category_name": res.Category.name,
                "category_id": res.Category.id,
                "options": options
            }

        return error.success(question)
Beispiel #13
0
 def post(self):
     id = request.form.get("id")
     name = request.form.get("name")
     # 判断id和name是否为空
     if not id or not name:
         return error.error_1001()
     # 查询数据库
     paper = Paper.Query().filter_by(id=id).first()
     if paper:
         # 判断name是否重复
         name_count = Paper.Query().filter(
             and_(Paper.name == name, Paper.id != id)).count()
         if name_count:
             return error.error_1002("此考试名称已存在")
         # 提交到数据库
         paper.name = name
         db.session.add(paper)
         db.session.commit()
     return error.success()
	def post(self):
		id = request.form.get("id")
		# 判断id是否为空
		if not id:
			return error.error_1001()
		# 查看该分类下是否有题目
		question_count = Question.Query().filter_by(category_id=id).count()
		if question_count:
			return error.error_1008("该分类中有题目,不能被删除");

		# 查询数据库
		category = Category.Query().filter_by(id=id).first()
		# 判断category是否存在
		if category:
			# 修改并提交到数据库
			category.is_valid = False
			db.session.add(category)
			db.session.commit()
		return error.success()
Beispiel #15
0
 def query(self):
     subject = request.args.get("subject") or request.form.get("subject")
     # 判断subject是否为空
     if not subject:
         return error.error_1001()
     # 判断subject值是否有效
     if subject not in config.subjects:
         return error.error_1006()
     # 查询数据库
     rows = Paper.Query().filter_by(subject=subject).all()
     papers = []
     for r in rows:
         paper = {
             "id": r.id,
             "name": r.name,
             "subject": r.subject,
             "created_time": datetime.timestamp(r.created_time)
         }
         papers.append(paper)
     return error.success(papers)
Beispiel #16
0
 def post(self):
     form = request.form
     name = form.get("name")
     subject = form.get("subject")
     # 判断name和subject是否为空
     if not name or not subject:
         return error.error_1001()
     # 判断sucject是否合法
     if subject not in config.subjects:
         return error.error_1006()
     # 判断name是否存在
     paper_count = Paper.Query().filter_by(name=name).count()
     if paper_count:
         return error.error_1002("此考试名称已经存在")
     # 提交到数据库
     paper = Paper(form)
     try:
         db.session.add(paper)
         db.session.commit()
     except:
         return error.error_1003()
     return error.success()
	def post(self):
		id = request.form.get("id")
		name = request.form.get("name")
		chapter = request.form.get("chapter")
		# 判断id是否为空
		if not id or not name:
			return error.error_1001()
		# 获取category
		category = Category.Query().filter_by(id=id).first()

		# 判处category是否存在
		if category:
			# 判断name是否存在
			category_count = Category.Query().filter(and_(Category.name == name, Category.id != id)).count()
			if category_count:
				return error.error_1002("此分类已存在")
			category.name = name
			if chapter:
				category.chapter = chapter
			db.session.add(category)
			db.session.commit()
		return error.success()
Beispiel #18
0
    def post(self):
        form = request.form
        # 获取参数
        question_id = form.get("question_id")
        user_answer = form.get("user_answer")

        # 判断参数是否存在
        if not question_id or not user_answer:
            return error.error_1001()
        # 判断用户是否重复回答
        answer_count = Answer.Query().filter_by(
            user_id=g.uid, question_id=question_id).count()
        if answer_count:
            return error.error_1002("此题已经回答")

        # 查询数据库
        question = Question.Query().filter_by(id=question_id).first()
        if not question:
            return error.error_1009("题目不存在")

        is_right = user_answer == question.right_answer
        postData = {
            "question_id": question_id,
            "user_answer": user_answer,
            "user_id": g.uid,
            "is_right": is_right
        }
        answer = Answer(postData)
        db.session.add(answer)
        db.session.commit()

        result = {
            "id": answer.id,
            "is_right": is_right,
            "right_answer": question.right_answer,
            "user_answer": user_answer
        }
        return error.success(result)
Beispiel #19
0
	def post(self):
		form = request.form
		name = form.get("name")
		phone = form.get("phone")
		print(form)
		print(request.get_data())
		print(type(request.get_data()))
		password = form.get("password")
		openid = form.get("openid")
		#phone,password不可以为空,username可以为空
		if not phone or (not password):
			return error.error_1001()

		# 判断phone手机号是否存在
		phone_count = User.Query().filter_by(phone=phone).count()
		if phone_count:
			return error.error_1002("此手机号已存在")

		# 判断name用户名是否存在
		name_count = User.Query().filter_by(name=name).count()
		if name_count:
			return error.error_1002("此用户已存在")

		# 判断openid是否存在
		if openid:
			openid_count = User.Query().filter_by(openid=openid).count()
			if openid_count:
				return error.error_1002("此微信号已存在")

		# 提交数据到数据库
		user = User(form)
		try:
			db.session.add(user)
			db.session.commit()
		except:
			return error.error_1003()
		return error.success()
	def query(self):
		subject = request.args.get("subject") or request.form.get("subject")
		# 判断subject是否存在
		if not subject:
			return error.error_1001()
		# 判断subject值是否正确
		if subject not in config.subjects:
			return error.error_1006()
		# 查询数据库
		rows = Category.Query().filter_by(subject=subject).all()
		print(rows)
		categories = []
		for r in rows:
			question_count = Question.Query().filter_by(category_id=r.id).count()
			category = {
				"id": r.id,
				"name": r.name,
				"subject": r.subject,
				"chapter": r.chapter,
				"question_count": question_count,
				"created_time": datetime.timestamp(r.created_time)
			}
			categories.append(category)
		return error.success(categories)
	def post(self):
		form = request.form
		name = form.get("name")
		subject = form.get("subject")
		print(form)
		# 判断name和subject是否为空
		if not name or not subject:
			return error.error_1001()
		# 同一科目下分类名称不能重复
		name_count = Category.Query().filter_by(name=name, subject=subject).count()
		if name_count:
			return error.error_1002("此分类已存在")
		# 判断subject是否合法
		if subject not in config.subjects:
			return error.error_1006()

		# 提交到数据库
		category = Category(form)
		try:
			db.session.add(category)
			db.session.commit()
		except:
			return error.error_1003()
		return error.success()