From 449d81fd98050e8369e4cafedcc8e9546143d5ba Mon Sep 17 00:00:00 2001 From: Maria Grimaldi Date: Tue, 26 Nov 2024 14:57:54 +0100 Subject: [PATCH] docs: [FC-0074] add diagram to better illustrate differences between hook types (#616) * docs: add diagram to better illustrate differences between hook types * docs: add reference to attrs and in-memory platform objects * fix: remove unnecessary pipe for table * docs: include more details in diagram * refactor: address PR reviews --- .../hooks_events_and_filters_side_by_side.png | Bin 0 -> 24268 bytes .../concepts/hooks_extension_framework.rst | 10 +++++++++- 2 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 source/_images/hooks_events_and_filters_side_by_side.png diff --git a/source/_images/hooks_events_and_filters_side_by_side.png b/source/_images/hooks_events_and_filters_side_by_side.png new file mode 100644 index 0000000000000000000000000000000000000000..0d705e1858a410b5a0967c940cf2425815bf7776 GIT binary patch literal 24268 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
    RFXfd*$HRNrb<8c>pe+JAnnJC```GV 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

    T71y=Ve45b>jmD4|5fYMxe?HBRe!i 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 O*4V(}a>1pW5B>?0R>esG literal 0 HcmV?d00001 diff --git a/source/developers/concepts/hooks_extension_framework.rst b/source/developers/concepts/hooks_extension_framework.rst index 8f7c2cfe1..f23cd3a5c 100644 --- a/source/developers/concepts/hooks_extension_framework.rst +++ b/source/developers/concepts/hooks_extension_framework.rst @@ -92,11 +92,18 @@ Here are some key differences between Open edX Events and Filters: | **Implementation** | Implemented using `Django signals`_, which allow | Implemented using an accumulative pipeline mechanism which | | | developers to send and receive notifications that an action happened | takes a set of arguments and returns a modified set | | | within a Django application. | to the caller or raises exceptions during | -| | | processing. | +| | Events use `attrs`_ classes with simple data types. | processing. The input arguments are in-memory platform | +| | | objects that can be modified. | +--------------------+------------------------------------------------------------------------+-------------------------------------------------------------+ | **Use cases** | Send an email notification when a user enrolls in a course. | Prevent the enrollment of non-authorized users. | +--------------------+------------------------------------------------------------------------+-------------------------------------------------------------+ +In this diagram you can see the main differences in functionality between Open edX Events and Filters: + +.. image:: /_images/hooks_events_and_filters_side_by_side.png + :alt: Open edX Events and Filters Side by Side + :align: center + How to Know When to Use an Event or a Filter? ============================================= @@ -161,3 +168,4 @@ We encourage you to review the list of use cases for events and filters to draw .. _openedx-events: https://github.com/openedx/openedx-events .. _Django signals: https://docs.djangoproject.com/en/4.2/topics/signals/ .. _Product Proposal: https://openedx.atlassian.net/wiki/spaces/COMM/pages/3875962884/How+to+submit+an+open+source+contribution+for+Product+Review +.. _attrs: https://www.attrs.org/en/stable/