示例#1
0
def create_question(cid):
    course = Course.query.filter_by(cid=cid).first_or_404()
    form = QuestionCreateForm().validate_for_api()
    with db.auto_commit():
        question = Question(title=form.title.data,
                            content=form.content.data,
                            course_id=course.cid,
                            author_gid=g.user['gid'],
                            update_time=int(datetime.now().timestamp()))
        history = History(root_question=question)
        for tag_name in form.tags.data:
            tag = Tag.get_or_create_tag(tag_name)
            question.tags.append(tag)
        db.session.add(question, history)
    return Success()
示例#2
0
def update_question(qid):
    question = Question.query.get_or_404(qid)
    form = QuestionUpdateForm().validate_for_api()
    with db.auto_commit():
        print(form.new_tags.data)
        for new_tag_name in form.new_tags.data:
            tag = Tag.get_or_create_tag(new_tag_name)
            question.tags.append(tag)
        for del_tag_name in form.del_tags.data:
            tag_set = Tag.query.filter_by(name=del_tag_name)
            if tag_set.count():
                try:
                    question.tags.remove(tag_set.first())
                except ValueError:
                    continue
        if form.content.data or form.title.data:
            if form.content.data != question.content or form.title.data != question.title:
                history = History.create_from_question(question)
                form.populate_obj(question)
                db.session.add(history)
            question.author_gid = g.user['gid']
            question.update_time = int(datetime.now().timestamp())
    return Success()