Extensão de frasco para integrar o conteúdo do discurso gerado aos documentos ao seu site. Este projeto foi nomeado anteriormente discourse_docs .
Documentação sobre como escrever páginas de documentação no discurso para consumo por este módulo e como configurar o site para usar o módulo pode ser encontrado no discurso canônico.
Exemplo de modelo de frasco para páginas de documentação pode ser encontrado na pasta examples . Consulte o ReadMe nessa pasta para obter mais informações.
Instale o projeto com Pip: pip install canonicalwebteam.discourse
Você pode adicionar a extensão do seu projeto da seguinte maneira, substituindo, pelo menos, base_url e index_topic_id com suas próprias configurações:
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 ) Depois que isso for adicionado, você precisará adicionar o documento do document.html à sua pasta de modelos.
Para o desenvolvimento local, é melhor testar este módulo com um de nossos projetos de site como o Ubuntu.com. Para mais informações, siga este guia (somente interno).
Os testes podem ser executados 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 Como você está visualizando um tópico protegido, você deve fornecer api_key e api_username . Você também precisa de um ID de tópico de índice, que você pode obter do discurso.ubuntu.com. Seu tópico de índice deve conter uma seção de metadados. Visite o EngageParser para obter mais informações sobre a estrutura. Você é incentivado a usar um nome de plano que não colide com os projetos existentes. Os modelos devem corresponder aos fornecidos nos parâmetros indicados.
Aqui está um exemplo de implementação:
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
)No seu projeto, você precisa criar suas próprias opiniões:
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 seria sua visão da lista de páginas de envolvimento, que você pode obter usando o método EngagagePages(args).get_index()single_engage_page seria sua visualização de páginas de engajamento único, que você pode obter usando EngagePages(args).get_engage_page(path) Da mesma forma, para aquisições, você só precisa passar por page_type="takeovers" .
EngagePages(args).get_index() também.EngagePages(args).parse_active_takeovers() . get_index fornece dois argumentos adicionais limit e offset , para fornecer funcionalidade de paginação. Eles padrão para 50 e 0, respectivamente.limit=-1MaxLimitError nas exceptions.py para lidar com o limite excessivo. Por padrão, ele levantará um erro quando ultrapassar 500