.. _hooks: Hooks ===== In FlaskBB we distinguish from `Python Hooks <#python-hooks>`_ and `Template Hooks <#template-hooks>`_. Python Hooks are prefixed with ``flaskbb_`` and called are called in Python files whereas Template Hooks have to be prefixed with ``flaskbb_tpl_`` and are executed in the templates. If you miss a hook, feel free to open a new issue or create a pull request. The pull request should always contain a entry in this document with a small example. A hook needs a hook specification which are defined in :mod:`flaskbb.plugins.spec`. All hooks have to be prefixed with ``flaskbb_`` and template hooks with ``flaskbb_tpl_``. Be sure to also check out the :ref:`api` documentation for interfaces that interact with these plugins in interesting ways. Python Hooks ------------ .. currentmodule:: flaskbb.plugins.spec Application Startup Hooks ~~~~~~~~~~~~~~~~~~~~~~~~~ Application startup hooks are called when the application is created, either through a WSGI server (uWSGI or gunicorn for example) or by the ``flaskbb`` command. Unless noted, all FlaskBB hooks are called after the relevant builtin FlaskBB setup has run (e.g. ``flaskbb_load_blueprints`` is called after all standard FlaskBB blueprints have been loaded). The hooks below are listed in the order they are called. .. autofunction:: flaskbb_extensions .. autofunction:: flaskbb_load_blueprints .. autofunction:: flaskbb_jinja_directives .. autofunction:: flaskbb_request_processors .. autofunction:: flaskbb_errorhandlers .. autofunction:: flaskbb_load_migrations .. autofunction:: flaskbb_load_translations .. autofunction:: flaskbb_load_post_markdown_class .. autofunction:: flaskbb_load_nonpost_markdown_class .. autofunction:: flaskbb_additional_setup FlaskBB CLI Hooks ~~~~~~~~~~~~~~~~~ These hooks are only invoked when using the ``flaskbb`` CLI. .. autofunction:: flaskbb_cli .. autofunction:: flaskbb_shell_context FlaskBB Event Hooks ~~~~~~~~~~~~~~~~~~~ .. autofunction:: flaskbb_event_post_save_before .. autofunction:: flaskbb_event_post_save_after .. autofunction:: flaskbb_event_topic_save_before .. autofunction:: flaskbb_event_topic_save_after .. autofunction:: flaskbb_event_user_registered .. autofunction:: flaskbb_authenticate .. autofunction:: flaskbb_post_authenticate .. autofunction:: flaskbb_authentication_failed .. autofunction:: flaskbb_reauth_attempt .. autofunction:: flaskbb_post_reauth .. autofunction:: flaskbb_reauth_failed FlaskBB Form Hooks ~~~~~~~~~~~~~~~~~~ .. autofunction:: flaskbb_form_new_post_save .. autofunction:: flaskbb_form_new_post .. autofunction:: flaskbb_form_new_topic .. autofunction:: flaskbb_form_new_topic_save .. autofunction:: flaskbb_form_registration Template Hooks -------------- .. note:: Template hooks, which are used in forms, are usually rendered after the hidden CSRF token field and before an submit field. .. autofunction:: flaskbb_tpl_navigation_before .. autofunction:: flaskbb_tpl_navigation_after .. autofunction:: flaskbb_tpl_user_nav_loggedin_before .. autofunction:: flaskbb_tpl_user_nav_loggedin_after .. autofunction:: flaskbb_tpl_form_registration_before .. autofunction:: flaskbb_tpl_form_registration_after .. autofunction:: flaskbb_tpl_form_user_details_before .. autofunction:: flaskbb_tpl_form_user_details_after .. autofunction:: flaskbb_tpl_form_new_post_before .. autofunction:: flaskbb_tpl_form_new_post_after .. autofunction:: flaskbb_tpl_form_new_topic_before .. autofunction:: flaskbb_tpl_form_new_topic_after .. autofunction:: flaskbb_tpl_profile_settings_menu .. autofunction:: flaskbb_tpl_profile_sidebar_stats .. autofunction:: flaskbb_tpl_post_author_info_before .. autofunction:: flaskbb_tpl_post_author_info_after .. autofunction:: flaskbb_tpl_post_content_before .. autofunction:: flaskbb_tpl_post_content_after .. autofunction:: flaskbb_tpl_post_menu_before .. autofunction:: flaskbb_tpl_post_menu_after .. autofunction:: flaskbb_tpl_topic_controls .. autofunction:: flaskbb_tpl_admin_settings_menu