WebSupport类

class sphinxcontrib.websupport.WebSupport[源代码]

Web支持包的主API类。与Web支持包的所有交互都应通过此类进行。

类采用以下关键字参数:

源目录

包含RestructuredText源文件的目录。

积木

应将生成数据和静态文件的目录放在其中。在创建 WebSupport 将用于生成数据的对象。

数据中心

Web支持数据所在的目录。在创建 WebSupport 将用于检索数据的对象。

搜索

这可能包含引用要使用的内置搜索适配器的字符串(例如“xapian”)或子类的实例。 BaseSearch .

存储

它可以包含表示数据库URI的字符串,也可以包含子类的实例。 StorageBackend . 如果不提供,将创建新的sqlite数据库。

moderation_callback

添加未显示的新注释时可调用的调用。它必须接受一个参数:表示添加的注释的字典。

静音

是否应在其他位置创建静态文件 而不在 '/static' ,这应该是一个具有该位置名称的字符串(例如 builddir + '/static_files'

备注

如果您指定 staticdir ,您通常需要调整 staticroot 因此。

静息根

如果静态文件不是从 '/static' ,这应该是一个具有该位置名称的字符串(例如 '/static_files'

文档根目录

如果文档不是从URL的基本路径提供的,那么应该是一个指定该路径的字符串(例如 'docs'

在 1.6 版本发生变更: websupport类从sphinx.websupport移到sphinxcontrib.websupport。请加 sphinxcontrib-websupport 在依赖项中打包并使用移动类。

方法

WebSupport.build()[源代码]

建立文档。将数据放入 outdir 目录。像这样使用:

support = WebSupport(srcdir, builddir, search='xapian')
support.build()

这将从中读取重组后的文本文件 srcdir . 然后它将构建泡菜和搜索索引,将它们放入 builddir . 它还将把节点数据保存到数据库中。

WebSupport.get_document(docname, username='', moderator=False)[源代码]

从pickle加载并返回文档。文档将是可用于呈现模板的dict对象:

support = WebSupport(datadir=datadir)
support.get_document('index', username, moderator)

在大多数情况下 docname 将从请求路径获取并直接传递给此函数。在烧瓶里,应该是这样的:

@app.route('/<path:docname>')
def index(docname):
    username = g.user.name if g.user else ''
    moderator = g.user.moderator if g.user else False
    try:
        document = support.get_document(docname, username,
                                        moderator)
    except DocumentNotFoundError:
        abort(404)
    render_template('doc.html', document=document)

返回的文档dict包含在模板呈现期间要使用的以下项。

  • body :作为HTML的文档主体

  • 侧边栏 :文档的边栏为HTML

  • 雷巴 :包含相关文档链接的DIV

  • 标题 :文档标题

  • css :指向sphinx使用的css文件的链接

  • 脚本 :包含注释选项的javascript

这提出 DocumentNotFoundError 如果文档匹配 docname 找不到。

参数:

docname -- 要加载的文档的名称。

WebSupport.get_data(node_id, username=None, moderator=False)[源代码]

获取与关联的注释和源 node_id .如果 username 投票信息将包含在返回的评论中。默认的commentbackend返回带有两个键的dict, 来源评论 . 来源 是节点的原始源,并用作用户可以添加的建议的起点。 评论 是表示注释的dict列表,每个都具有以下项:

目录

文本

注释文本。

用户名

与注释一起存储的用户名。

身份证件

注释的唯一标识符。

评级

评论的当前评级。

年龄

添加注释后的时间(秒)。

时间

包含时间信息的口述。它包含以下键:年、月、日、小时、分钟、秒、iso和delta。 iso 时间格式是否为ISO 8601格式? delta 是一种可打印形式,说明注释的时间(例如“3小时前”)。

投票

如果 user_id 如果给出,这将是一个表示投票的整数。1表示赞成票,1表示反对票,0表示反对票。

结点

注释附加到的节点的ID。如果注释的父级是另一个注释而不是节点,则此值为空。

起源

如果注释未附加到节点,则该注释附加到的注释的ID。

儿童

所有子项的列表,格式为。

proposal_diff

当前源和用户建议源之间的差异的HTML表示。

参数:
  • node_id -- 要获取注释的节点的ID。

  • username -- 查看注释的用户的用户名。

  • moderator -- 用户是否是主持人。

WebSupport.add_comment(text, node_id='', parent_id='', displayed=True, username=None, time=None, proposal=None, moderator=False)[源代码]

向节点或其他注释添加注释。以与相同的格式返回注释 get_comments() . 如果将注释附加到节点,请使用node关键字参数传入节点的ID(作为字符串)::

comment = support.add_comment(text, node_id=node_id)

如果注释是另一个注释的子级,请使用parent关键字参数提供父级的ID(作为字符串)::

comment = support.add_comment(text, parent_id=parent_id)

如果要将用户名与注释一起存储,请传入可选的 username 关键字参数:

comment = support.add_comment(text, node=node_id,
                              username=username)
参数:
  • parent_id -- 注释父级的前缀ID。

  • text -- 注释的文本。

  • displayed -- 出于缓和的目的

  • username -- 进行注释的用户的用户名。

  • time -- 创建注释的时间,默认为现在。

WebSupport.process_vote(comment_id, username, value)[源代码]

处理用户的投票。Web支持包依赖API用户执行身份验证。API用户通常会收到来自表单的注释ID和值,然后确保用户经过身份验证。必须传入唯一的用户名,该用户名还将用于检索用户过去的投票数据。一个例子,再次在烧瓶中:

@app.route('/docs/process_vote', methods=['POST'])
def process_vote():
    if g.user is None:
        abort(401)
    comment_id = request.form.get('comment_id')
    value = request.form.get('value')
    if value is None or comment_id is None:
        abort(400)
    support.process_vote(comment_id, g.user.name, value)
    return "success"
参数:
  • comment_id -- 正在投票的评论

  • username -- 用户投票的唯一用户名

  • value -- 赞成票1,反对票1,反对票0。

WebSupport.get_search_results(q)[源代码]

执行查询搜索 q ,并创建一组搜索结果。然后将搜索结果呈现为HTML,并返回一个上下文dict,就像 get_document() ::

document = support.get_search_results(q)
参数:

q -- 搜索查询