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 and how to configure the website to use the module can be found in the Canonical discourse.

Example Flask template for documentation pages can be found in examples/document.html

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.10.tar.gz (24.7 kB view details)

Uploaded Source

Built Distribution

File details

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

File metadata

File hashes

Hashes for canonicalwebteam.discourse-4.0.10.tar.gz
Algorithm Hash digest
SHA256 871d24f1be67a0e8b7bfb4c87e88b9f7e488ea7f0a9360493acdd863246c0a03
MD5 ce30b4381cbdb04985446bb27df97d9e
BLAKE2b-256 0371795ee8a5bda848529f98773cb77089cb00bbaf2ef2f3f0ab6e9eba4a1665

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for canonicalwebteam.discourse-4.0.10-py3-none-any.whl
Algorithm Hash digest
SHA256 adc75e0b0725ce30f2dff7033b81a365746cdee99e41ae173ca40d8157a75fd9
MD5 9960189ec5c8a9f62100710874f7b0a6
BLAKE2b-256 75a778f62e0bcbfcceced992df8754c39d017cefd5d848e9bbaaae20795f8b15

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