思想论坛
cullerton.agora的Python项目详细描述
agora是一个思想论坛。它是一个简单的、类似博客的应用程序,支持多个作者。
它是为班级课程开发的,并不是为了真正的部署,尽管它可能有一些用途。
有两类:作者和创意。一个论坛可以有零个或多个作者。每个作者可以有零个或更多的想法。
agora使用sqlalchemy作为持久层。您需要一个有效的sqlalchemy会话来初始化agora。
用法
设置sqlalchemy会话
>>> from agora.models import Base >>> from sqlalchemy import create_engine >>> from sqlalchemy.orm import scoped_session, sessionmaker >>> engine = create_engine('sqlite:///:memory:') >>> Base.metadata.create_all(engine) >>> DBSession = scoped_session(sessionmaker()) >>> DBSession.configure(bind=engine)
论坛基础
>>> from agora import Forum >>> forum = Forum(DBSession)
一个新的论坛没有作者和想法。
>>> forum.get_authors() [] >>> forum.get_ideas() []
要添加一个想法,首先需要一个作者。
若要添加新作者,请将用户名、全名和电子邮件传递到add\u author方法。
>>> forum.add_author(username='schmoe', fullname='Joe Schmoe', email='schmoe@example.com') 1 >>> forum.add_author(username='misinformation', fullname='Miss Information', email='misinformation@example.com') 2
注意,该方法返回作者的id。
我们现在有了作者。
>>> forum.get_authors() [Joe Schmoe, March 02, 2016, Miss Information, March 02, 2016]
您可以通过ID访问作者。
>>> forum.get_author(1) Joe Schmoe, March 02, 2016
若要添加新创意,请将标题、创意和作者ID传递到add\u idea方法。
>>> forum.add_idea(title='First Idea!', idea='This is my idea.', author_id=1) 1 >>> forum.add_idea(title='My First Idea!', idea='This is my idea.', author_id=2) 2 >>> forum.add_idea(title='Another Idea!', idea='This is my idea.', author_id=1) 3 >>> forum.add_idea(title='Another Idea!', idea='This is my idea.', author_id=2) 4
我们现在有主意了。
>>> forum.get_ideas() [First Idea!, Joe Schmoe, March 02, 2016, My First Idea!, Miss Information, March 02, 2016, Another Idea!, Joe Schmoe, March 02, 2016, Another Idea!, Miss Information, March 02, 2016]
您可以通过ID访问想法。
>>> forum.get_idea(1) First Idea!, Joe Schmoe, March 02, 2016
你也可以通过过滤器访问想法。
>>> forum.get_ideas(filters={'author': forum.get_author(1)}) [First Idea!, Joe Schmoe, March 02, 2016, Another Idea!, Joe Schmoe, March 02, 2016] >>> forum.get_ideas(filters={'title': 'First Idea!'}) [First Idea!, Joe Schmoe, March 02, 2016] >>> forum.get_ideas(filters={'title': 'Another Idea!'}) [Another Idea!, Joe Schmoe, March 02, 2016, Another Idea!, Miss Information, March 02, 2016] >>> forum.get_ideas(filters={'author': forum.get_author(2), 'title': 'Another Idea!'}) [Another Idea!, Miss Information, March 02, 2016]
您可以按ID删除创意。
>>> forum.delete_idea(1) 1 >>> forum.get_ideas() [My First Idea!, Miss Information, March 02, 2016, Another Idea!, Joe Schmoe, March 02, 2016, Another Idea!, Miss Information, March 02, 2016]
初始化数据库
提供了用于初始化数据库的脚本。它安装在virtualenv的bin目录中。必须向其传递有效的sqlalchemy数据库uri。
$ initialize_agora_db <database_uri> $ initialize_agora_db sqlite:///agora.sqlite
如果将单词seed附加到命令中,还可以使用脚本为数据库添加一个示例作者和两个想法。
$ initialize_agora_db sqlite:///agora.sqlite seed