From 9750da4ebc9bf45fd613ce9561dcfd22c1ae0de7 Mon Sep 17 00:00:00 2001 From: Cristhian Garcia Date: Thu, 28 Sep 2023 15:01:56 -0500 Subject: [PATCH] feat: create event for discussion events --- openedx_events/learning/data.py | 28 ++++++++++++++++++++++++++++ openedx_events/learning/signals.py | 13 +++++++++++++ openedx_events/tooling.py | 1 + 3 files changed, 42 insertions(+) diff --git a/openedx_events/learning/data.py b/openedx_events/learning/data.py index 7e5d2f26a..818cf4da7 100644 --- a/openedx_events/learning/data.py +++ b/openedx_events/learning/data.py @@ -296,3 +296,31 @@ class ProgramCertificateData: status = attr.ib(type=str) url = attr.ib(type=str) certificate_available_date = attr.ib(type=datetime, default=None) + + +@attr.s(frozen=True) +class DiscussionThreadData: + """ + Attributes defined for Open edX Discussion Thread data object. + + Arguments: + + """ + + anonymous = attr.ib(type=bool) + anonymous_to_peers = attr.ib(type=bool) + body = attr.ib(type=str) + category_id = attr.ib(type=int) + category_name = attr.ib(type=str) + commentable_id = attr.ib(type=str) + group_id = attr.ib(type=int) + id = attr.ib(type=int) + team_id = attr.ib(type=int) + thread_type = attr.ib(type=str) + title = attr.ib(type=str) + title_truncated = attr.ib(type=bool) + truncated = attr.ib(type=bool) + url = attr.ib(type=str) + user_course_roles = attr.ib(type=List[str], factory=list) + user_forums_roles = attr.ib(type=List[str], factory=list) + options = attr.ib(type=dict, factory=dict) diff --git a/openedx_events/learning/signals.py b/openedx_events/learning/signals.py index 5c1399376..7827f434e 100644 --- a/openedx_events/learning/signals.py +++ b/openedx_events/learning/signals.py @@ -13,6 +13,7 @@ CohortData, CourseDiscussionConfigurationData, CourseEnrollmentData, + DiscussionThreadData, PersistentCourseGradeData, ProgramCertificateData, UserData, @@ -196,3 +197,15 @@ "notification_data": UserNotificationData, } ) + +# .. event_type: org.openedx.learning.thread.created.v1 +# .. event_name: FORUM_THREAD_CREATED +# .. event_description: Emitted when a new thread is created in a discussion +# .. event_data: DiscussionThreadData +# Warning: This event is currently incompatible with the event bus, list/dict cannot be serialized yet +FORUM_THREAD_CREATED = OpenEdxPublicSignal( + event_type="org.openedx.learning.thread.created.v1", + data={ + "thread": DiscussionThreadData, + } +) diff --git a/openedx_events/tooling.py b/openedx_events/tooling.py index 35700ed30..8000eccc5 100644 --- a/openedx_events/tooling.py +++ b/openedx_events/tooling.py @@ -22,6 +22,7 @@ "org.openedx.content_authoring.course.certificate_config.changed.v1", "org.openedx.content_authoring.course.certificate_config.deleted.v1", "org.openedx.learning.user.notification.requested.v1" + "org.openedx.learning.user.thread.created.v1" ]