Skip to content

Commit

Permalink
feat: Deprecates CONTENT_OBJECT_TAGS_CHANGED in favor of CONTENT_OBJE…
Browse files Browse the repository at this point in the history
…CT_ASSOCIATIONS_CHANGED [FC-0062] (#66)

* feat: adds event CONTENT_OBJECT_ASSOCIATOONS_CHANGED and ContentObjectChangedData, which has a field for indicating what has changed.
* chore: updates changelog
  • Loading branch information
pomegranited authored Sep 6, 2024
1 parent b6ab399 commit ef00ede
Show file tree
Hide file tree
Showing 6 changed files with 76 additions and 2 deletions.
15 changes: 15 additions & 0 deletions CHANGELOG.rst
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,21 @@ __________



[9.14.0] - 2024-09-12
---------------------

Added
~~~~~

* Adds event ``CONTENT_OBJECT_ASSOCIATIONS_CHANGED``
* Adds ``ContentObjectChangedData``, which inherits from ContentObjectData and adds an optional list of string ``changes``.

Deprecated
~~~~~~~~~~

* Deprecated event ``CONTENT_OBJECT_TAGS_CHANGED`` in favor of ``CONTENT_OBJECT_ASSOCIATIONS_CHANGED``
Plan to remove after Sumac.

[9.13.0] - 2024-09-05
---------------------

Expand Down
2 changes: 1 addition & 1 deletion openedx_events/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,4 @@
more information about the project.
"""

__version__ = "9.13.0"
__version__ = "9.14.0"
19 changes: 18 additions & 1 deletion openedx_events/content_authoring/data.py
Original file line number Diff line number Diff line change
Expand Up @@ -185,7 +185,7 @@ class LibraryBlockData:
@attr.s(frozen=True)
class ContentObjectData:
"""
Data about changed content object.
Data about a content object.
Arguments:
object_id (str): identifier of the Content object. This represents the id of the course or library block
Expand All @@ -196,6 +196,23 @@ class ContentObjectData:
object_id = attr.ib(type=str)


@attr.s(frozen=True)
class ContentObjectChangedData(ContentObjectData):
"""
Data about a changed content object.
Arguments:
object_id (str): identifier of the Content object. This represents the id of the course or library block
as a string. For example:
block-v1:SampleTaxonomyOrg2+STC1+2023_1+type@vertical+block@f8de78f0897049ce997777a3a31b6ea0
changes: list of changes made to this ContentObject, e.g. "tags", "collections"
If list is empty, assume everything has changed.
"""

changes = attr.ib(type=List[str], factory=list)


@attr.s(frozen=True)
class LibraryCollectionData:
"""
Expand Down
13 changes: 13 additions & 0 deletions openedx_events/content_authoring/signals.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
from openedx_events.content_authoring.data import (
CertificateConfigData,
ContentLibraryData,
ContentObjectChangedData,
ContentObjectData,
CourseCatalogData,
CourseData,
Expand Down Expand Up @@ -201,9 +202,21 @@
}
)

# .. event_type: org.openedx.content_authoring.content.object.associations.changed.v1
# .. event_name: CONTENT_OBJECT_ASSOCIATIONS_CHANGED
# .. event_description: emitted when an object's associations are changed, e.g tags, collections
# .. event_data: ContentObjectData
CONTENT_OBJECT_ASSOCIATIONS_CHANGED = OpenEdxPublicSignal(
event_type="org.openedx.content_authoring.content.object.associations.changed.v1",
data={
"content_object": ContentObjectChangedData
}
)

# .. event_type: org.openedx.content_authoring.content.object.tags.changed.v1
# .. event_name: CONTENT_OBJECT_TAGS_CHANGED
# .. event_description: emitted when an object's tags are changed
# DEPRECATED: please use CONTENT_OBJECT_ASSOCIATIONS_CHANGED instead.
# .. event_data: ContentObjectData
CONTENT_OBJECT_TAGS_CHANGED = OpenEdxPublicSignal(
event_type="org.openedx.content_authoring.content.object.tags.changed.v1",
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
{
"name": "CloudEvent",
"type": "record",
"doc": "Avro Event Format for CloudEvents created with openedx_events/schema",
"fields": [
{
"name": "content_object",
"type": {
"name": "ContentObjectChangedData",
"type": "record",
"fields": [
{
"name": "object_id",
"type": "string"
},
{
"name": "changes",
"type": {
"type": "array",
"items": "string"
}
}
]
}
}
],
"namespace": "org.openedx.content_authoring.content.object.associations.changed.v1"
}
1 change: 1 addition & 0 deletions openedx_events/event_bus/avro/tests/test_avro.py
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,7 @@ def generate_test_event_data_for_data_type(data_type): # pragma: no cover
LibraryLocatorV2: LibraryLocatorV2.from_string('lib:MITx:reallyhardproblems'),
LibraryUsageLocatorV2: LibraryUsageLocatorV2.from_string('lb:MITx:reallyhardproblems:problem:problem1'),
List[int]: [1, 2, 3],
List[str]: ["hi", "there"],
datetime: datetime.now(),
CCXLocator: CCXLocator(org='edx', course='DemoX', run='Demo_course', ccx='1'),
UUID: uuid4(),
Expand Down

0 comments on commit ef00ede

Please sign in to comment.