From 9b9f8940981b245a0b4a06e3276f8b428b7ce02b Mon Sep 17 00:00:00 2001 From: Yusuf Musleh Date: Sun, 24 Mar 2024 07:17:03 +0300 Subject: [PATCH] feat: Add `CONTENT_OBJECT_TAGGED` signal This signal is emitted when tags on a content object have changed. --- openedx_events/__init__.py | 2 +- openedx_events/content_authoring/data.py | 12 +++++++++++ openedx_events/content_authoring/signals.py | 12 +++++++++++ ...ent_authoring+object+tagged+v1_schema.avsc | 21 +++++++++++++++++++ 4 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 openedx_events/event_bus/avro/tests/schemas/org+openedx+content_authoring+object+tagged+v1_schema.avsc diff --git a/openedx_events/__init__.py b/openedx_events/__init__.py index 51393c305..a9c97430f 100644 --- a/openedx_events/__init__.py +++ b/openedx_events/__init__.py @@ -5,4 +5,4 @@ more information about the project. """ -__version__ = "9.5.2" +__version__ = "9.5.3" diff --git a/openedx_events/content_authoring/data.py b/openedx_events/content_authoring/data.py index bf6d603e0..0eed3d2fb 100644 --- a/openedx_events/content_authoring/data.py +++ b/openedx_events/content_authoring/data.py @@ -180,3 +180,15 @@ class LibraryBlockData: library_key = attr.ib(type=LibraryLocatorV2) usage_key = attr.ib(type=LibraryUsageLocatorV2) + + +@attr.s(frozen=True) +class ContentObjectData: + """ + Data about content object where tags changed + + Arguments: + object_id (str): identifier of the Content object. + """ + + object_id = attr.ib(type=str) diff --git a/openedx_events/content_authoring/signals.py b/openedx_events/content_authoring/signals.py index a10770b18..1d0b1b0a3 100644 --- a/openedx_events/content_authoring/signals.py +++ b/openedx_events/content_authoring/signals.py @@ -15,6 +15,7 @@ DuplicatedXBlockData, LibraryBlockData, XBlockData, + ContentObjectData, ) from openedx_events.tooling import OpenEdxPublicSignal @@ -198,3 +199,14 @@ "library_block": LibraryBlockData, } ) + +# .. event_type: org.openedx.content_authoring.object.tagged.v1 +# .. event_name: CONTENT_OBJECT_TAGGED +# .. event_description: emitted when an object's tags are changed +# .. event_data: ContentObjectData +CONTENT_OBJECT_TAGGED = OpenEdxPublicSignal( + event_type="org.openedx.content_authoring.object.tagged.v1", + data={ + "content_object": ContentObjectData + } +) diff --git a/openedx_events/event_bus/avro/tests/schemas/org+openedx+content_authoring+object+tagged+v1_schema.avsc b/openedx_events/event_bus/avro/tests/schemas/org+openedx+content_authoring+object+tagged+v1_schema.avsc new file mode 100644 index 000000000..9601fbec5 --- /dev/null +++ b/openedx_events/event_bus/avro/tests/schemas/org+openedx+content_authoring+object+tagged+v1_schema.avsc @@ -0,0 +1,21 @@ +{ + "name": "CloudEvent", + "type": "record", + "doc": "Avro Event Format for CloudEvents created with openedx_events/schema", + "fields": [ + { + "name": "content_object", + "type": { + "name": "ContentObjectData", + "type": "record", + "fields": [ + { + "name": "object_id", + "type": "string" + } + ] + } + } + ], + "namespace": "org.openedx.content_authoring.object.tagged.v1" +} \ No newline at end of file