Skip to main content

Flask extension to integrate discourse content generated to docs to your website.

Project description

canonicalwebteam.discourse

Flask extension to integrate discourse content generated to docs to your website. This project was previously named discourse_docs.

Writing documentation

Documentation for how to write documentation pages in Discourse for consumption by this module can be found in the Canonical discourse.

Install

Install the project with pip: pip install canonicalwebteam.discourse

You can add the extension on your project as follows, replacing, at least, base_url and index_topic_id with your own settings:

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)

Once this is added you will need to add the file document.html to your template folder.

Local development

For local development, it's best to test this module with one of our website projects like ubuntu.com. For more information, follow this guide (internal only).

Instructions for Engage pages extension

Because you are viewing a protected topic, you must provide api_key and api_username. You also need an index topic id, which you can get from discourse.ubuntu.com. Your index topic must contain a metadata section. Visit the EngageParser for more information about the structure. You are encouraged to use an blueprint name that does not collide with existent blueprints. The templates must match the ones provided in the parameters indicated.

Here is an example of an implementation:

engage_path = "/engage"
engage_docs = EngagePages(
    parser=EngageParser(
        api=DiscourseAPI(
            base_url="https://discourse.ubuntu.com/",
            session=session,
            api_key="secretkey", # API KEY used in the tests
            api_username="canonical",
        ),
        index_topic_id=17229,
        url_prefix=engage_path,
    ),
    document_template="/engage/base.html",
    url_prefix=engage_path,
    blueprint_name="engage-pages",
)

Additionally, if you need a list of all engage pages, you would construct a view this way:

app.add_url_rule(
    engage_path, view_func=build_engage_index(engage_docs)
)

Where build_engage_index would be your view.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

canonicalwebteam.discourse-4.0.9.tar.gz (24.6 kB view details)

Uploaded Source

Built Distribution

File details

Details for the file canonicalwebteam.discourse-4.0.9.tar.gz.

File metadata

File hashes

Hashes for canonicalwebteam.discourse-4.0.9.tar.gz
Algorithm Hash digest
SHA256 ea2f48c819848d8d963d506582750b4d6276a2a1648e63253fc52142f0615aea
MD5 87ee8932cd677cc933b1936255f0a346
BLAKE2b-256 ae6bf4db4b557b5aca00d265293f806ade8df1eb5b67be926f28a0ff19c1df36

See more details on using hashes here.

File details

Details for the file canonicalwebteam.discourse-4.0.9-py3-none-any.whl.

File metadata

File hashes

Hashes for canonicalwebteam.discourse-4.0.9-py3-none-any.whl
Algorithm Hash digest
SHA256 942a435492c197e806af84e56bada1f8204f63a8725301a5e3672935eca78e9d
MD5 d569a7c1a0f9f56933c4ce9a9d5e3694
BLAKE2b-256 664b0e49b3b960ee1ff01e2e1acb05d46349c0765dcdbe28e561f572872d1151

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page