Flask扩展,用于将生成的discourse内容集成到您的网站文档中。
项目描述
canonicalwebteam.discourse
Flask扩展,用于将生成的discourse内容集成到您的网站文档中。该项目之前命名为discourse_docs
。
编写文档
有关如何在Discourse中编写文档页面以及如何配置网站使用此模块的文档,可以在Canonical discourse中找到。
示例Flask模板可以在examples
文件夹中找到。有关更多信息,请参阅该文件夹中的README。
安装
使用pip安装项目:pip install canonicalwebteam.discourse
您可以在项目中添加以下扩展,将至少base_url
和index_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_key
和api_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
提供了两个额外的参数limit
和offset
,以提供分页功能。它们分别默认为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
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 57af50db527c281b88130061cfee912e08cfee25fc07ed7384c31c709bdda5a6 |
|
MD5 | 8db6960be2377ba7ff569b56e569cd9a |
|
BLAKE2b-256 | 8c65799bc80b97c596866a0ff1d5567dc9f8a7f72e29fd074b5e70d579efba32 |