跳转到主要内容

Flask扩展,用于将生成的discourse内容集成到您的网站文档中。

项目描述

canonicalwebteam.discourse

Flask扩展,用于将生成的discourse内容集成到您的网站文档中。该项目之前命名为discourse_docs

编写文档

有关如何在Discourse中编写文档页面以及如何配置网站使用此模块的文档,可以在Canonical discourse中找到。

示例Flask模板可以在examples文件夹中找到。有关更多信息,请参阅该文件夹中的README

安装

使用pip安装项目:pip install canonicalwebteam.discourse

您可以在项目中添加以下扩展,将至少base_urlindex_topic_id替换为您自己的设置

import talisker.requests
from canonicalwebteam.discourse import DiscourseAPI, Tutorials, TutorialParser

app = Flask("myapp")
session = talisker.requests.get_session()

discourse = Tutorials(
    parser=TutorialParser(
        api=DiscourseAPI(
            base_url="https://forum.example.com/", session=session
        ),
        index_topic_id=321,
        url_prefix="/docs",
    ),
    document_template="docs/document.html",
    url_prefix="/docs",
)
discourse.init_app(app)

添加此内容后,您需要将文件document.html添加到您的模板文件夹。

本地开发

对于本地开发,最好使用我们的网站项目之一,如ubuntu.com来测试此模块。有关更多信息,请参阅此指南(仅限内部使用)

运行测试、代码风格检查和格式化

可以使用Tox运行测试。

pip3 install tox  # Install tox
tox               # Run tests
tox -e lint       # Check the format of Python code
tox -e format     # Reformat the Python code

Engage页面扩展说明

由于您正在查看受保护的主题,您必须提供api_keyapi_username。您还需要索引主题ID,您可以从discourse.ubuntu.com获取。您的索引主题必须包含元数据部分。访问EngageParser以获取有关结构的更多信息。建议您使用不与现有蓝图冲突的蓝图名称。模板必须与参数中指示的模板相匹配。

以下是一个实现示例

engage_pages = EngagePages(
    api=DiscourseAPI(
        base_url="https://discourse.ubuntu.com/",
        session=session,
        get_topics_query_id=14,
        api_key=DISCOURSE_API_KEY, # replace with your API key
        api_username=DISCOURSE_API_USERNAME, # replace with correspoding username
    ),
    category_id=51,
    page_type="engage-pages", # one of ["engage-pages", "takeovers"]
    exclude_topics=[] # this is a list of topic ids that we want to exclude from Markdown error checks
    additional_metadata_validation=[] # list of additional keys in the metadata table that you want to validate existence for e.g. language
)

在您的项目中,您需要创建自己的视图

app.add_url_rule(
    "/engage", view_func=build_engage_index(engage_pages)
)

app.add_url_rule(
    "/engage/<path>", view_func=single_engage_page(engage_pages)
)
  • 其中build_engage_index将是您的engage页面列表视图,您可以通过使用EngagagePages(args).get_index()方法获取它
  • single_engage_page将是您的单个engage页面视图,您可以使用EngagePages(args).get_engage_page(path)获取它

对于接管,只需传递page_type="takeovers"

  • 要获取接管列表,也可以使用EngagePages(args).get_index()
  • 要获取活动接管列表,请使用EngagePages(args).parse_active_takeovers()

分页

  • get_index提供了两个额外的参数limitoffset,以提供分页功能。它们分别默认为50和0。
  • 如果您想获取所有engage页面,在jp.ubuntu.com等一些网站上可能并不多,您可以传递limit=-1
  • exceptions.py中使用MaxLimitError来处理过大的limit。默认情况下,当它超过500时将引发错误。

项目详情


下载文件

下载适用于您的平台文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分布

canonicalwebteam_discourse-5.7.2.tar.gz (31.6 kB 查看散列)

上传时间:

构建分布

canonicalwebteam.discourse-5.7.2-py3-none-any.whl (36.9 kB 查看散列)

上传于 Python 3

由以下组织支持

AWSAWS云计算和安全赞助商DatadogDatadog监控FastlyFastlyCDNGoogleGoogle下载分析MicrosoftMicrosoftPSF赞助商PingdomPingdom监控SentrySentry错误日志StatusPageStatusPage状态页面