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()
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()