Example #1
0
def add(id = 0):
	topic = Topic.query.filter(Topic.id == id).first()
	topic_form = TopicForm(obj = topic)

	if request.method == 'POST' and topic_form.validate():
		if topic:
			if topic.category_id != topic_form.category_id.data:
				new_category = Category.get(topic_form.category_id.data)
				new_category.num += 1
				old_category = Category.get(topic.category_id)
				old_category.num -= 1

			tag_list = topic_form.tag.data.split(" ")
			for tag_name in tag_list:
				if tag_name.strip():
					tag = TopicTag.query.filter(TopicTag.name == tag_name).first()
					if tag:
						topic_to_tag = TopicToTag.query.filter(TopicToTag.topic_id == id).filter(TopicToTag.tag_id == tag.id).first()
						if topic_to_tag is None:
							tag.num += 1
							topic_to_tag = TopicToTag(id, tag.id)
							db_session.add(topic_to_tag)
					else:
						tag = TopicTag(tag_name)
						db_session.add(tag)	
						db_session.flush()
						topic_to_tag = TopicToTag(topic.id, tag.id)
						db_session.add(topic_to_tag)
								
			topic_form.populate_obj(topic)
			db_session.commit()	
		else:
			topic = Topic(topic_form.title.data)
			topic.content = topic_form.content.data
			topic.category_id = topic_form.category_id.data
			topic.tag = topic_form.tag.data
			db_session.add(topic)
			db_session.flush()

			category = 	Category.get(topic_form.category_id.data)
			category.num += 1
			tag_list = topic_form.tag.data.split(" ")
			for tag_name in tag_list:
				if tag_name.strip():
					tag = TopicTag.query.filter(TopicTag.name == tag_name).first()
					if tag:
						tag.num += 1
					else:
						tag = TopicTag(tag_name)
						db_session.add(tag)
						db_session.flush()
					topic_to_tag = TopicToTag(topic.id, tag.id)
					db_session.add(topic_to_tag)	
			db_session.commit()	
		return redirect('/admin/topic/list')
	else:
		return render_template('/admin/addtopic.html',
			topic_form = topic_form,
			)
Example #2
0
def topic_del():
    """
    del topic
    """
    if id:
        Topic.query(Topic.id == id).delete()
        return redirect('/')
    else:
        abort(404)
Example #3
0
def topic_del():
    """
    del topic
    """
    if id:
        Topic.query(Topic.id == id).delete()
        return redirect('/')
    else:
        abort(404)
Example #4
0
def tag_show(id=0, name=''):
    """
    main page
    """
    if name is not "":
        tag = TopicTag.query.filter(TopicTag.name == name).first()
    else:
        tag = TopicTag.query.filter(TopicTag.id == id).first()

    topic_tag = TopicToTag.query.filter(TopicToTag.tag_id == tag.id).all()
    tagids = [t.topic_id for t in topic_tag]
    topic = Topic.gets(tagids)

    if tag:
        return render_template('/topic/tag_show.html', topic=topic, tag=tag)
    else:
        abort(404)
Example #5
0
def tag_show(id=0, name=''):
    """
    main page
    """
    if name is not "":
        tag = TopicTag.query.filter(TopicTag.name == name).first()
    else:
        tag = TopicTag.query.filter(TopicTag.id == id).first()

    topic_tag = TopicToTag.query.filter(TopicToTag.tag_id == tag.id).all()
    tagids = [t.topic_id for t in topic_tag]
    topic = Topic.gets(tagids)

    if tag:
        return render_template('/topic/tag_show.html',
                               topic=topic,
                               tag=tag)
    else:
        abort(404)
Example #6
0
def topic_add(id=0):
    """
    add topic
    """
    topic = Topic.query.filter(Topic.id == id).first()
    topic_form = TopicForm(obj=topic)
    topic_form.category_id.choices = [
        (c.id, c.name)
        for c in Category.query.order_by(Category.id.asc()).all()
    ]
    if request.method == 'POST' and topic_form.validate():
        if topic:
            if topic.category_id != topic_form.category_id.data:
                new_category = Category.get(topic_form.category_id.data)
                new_category.num += 1
                old_category = Category.get(topic.category_id)
                old_category.num -= 1

            tag_list = topic_form.tag.data.split(" ")
            for tag_name in tag_list:
                if tag_name.strip():
                    tag = TopicTag.query.filter(
                        TopicTag.name == tag_name).first()
                    if tag:
                        topic_to_tag = TopicToTag.query.filter(
                            TopicToTag.topic_id == id).filter(
                                TopicToTag.tag_id == tag.id).first()
                        if topic_to_tag is None:
                            tag.num += 1
                            topic_to_tag = TopicToTag(id, tag.id)
                            db_session.add(topic_to_tag)
                    else:
                        tag = TopicTag(tag_name)
                        db_session.add(tag)
                        db_session.flush()
                        topic_to_tag = TopicToTag(topic.id, tag.id)
                        db_session.add(topic_to_tag)

            topic_form.populate_obj(topic)
            db_session.commit()
        else:
            topic = Topic(topic_form.title.data)
            topic.content = topic_form.content.data
            topic.category_id = topic_form.category_id.data
            topic.tag = topic_form.tag.data
            db_session.add(topic)
            db_session.flush()

            category = Category.get(topic_form.category_id.data)
            category.num += 1
            tag_list = topic_form.tag.data.split(" ")
            for tag_name in tag_list:
                if tag_name.strip():
                    tag = TopicTag.query.filter(
                        TopicTag.name == tag_name).first()
                    if tag:
                        tag.num += 1
                    else:
                        tag = TopicTag(tag_name)
                        db_session.add(tag)
                        db_session.flush()
                    topic_to_tag = TopicToTag(topic.id, tag.id)
                    db_session.add(topic_to_tag)
            db_session.commit()
        return redirect('/%s' % topic.id)
    else:
        return render_template('/topic/add.html', topic_form=topic_form)