Package: openedx-events
Open edX Events from Hooks Extensions Framework (OEP-50).PurposeThis repository implements the necessary tooling and definitions used by the
Hooks Extension Framework to manage the events execution and extra tools.Getting Started with DevelopmentPlease see the Open edX documentation forguidance on Python developmentin this repo.DeployingThe Open edX Events component is a Python library which doesn’t need independent deployment. Therefore,
its setup is reasonably straightforward. First, it needs to be added to your service requirements,
and then it will be installed alongside requirements of the service.If the service you intend to use is either the LMS or CMS, then the library is installed alongside
their requirements since the Maple release.Getting HelpDocumentationSeedocumentation on Read the Docs.More HelpIf you’re having trouble, we have discussion forums athttps://discuss.openedx.orgwhere you can connect with others in the
community.Our real-time conversations are on Slack. You can request aSlack
invitation, then join ourcommunity Slack workspace.For anything non-trivial, the best path is to open an issue in this
repository with as many details about the issue you are facing as you
can provide.https://github.com/openedx/openedx-events/issuesFor more information about these options, see theGetting Helppage.LicenseThe code in this repository is licensed under the Apache 2.0 license unless
otherwise noted.Please seeLICENSE.txtfor details.ContributingContributions are very welcome.
Please readHow To Contributefor details.This project is currently accepting all types of contributions, bug fixes,
security fixes, maintenance work, or new features.  However, please make sure
to have a discussion about your new feature idea with the maintainers prior to
beginning development to maximize the chances of your change being accepted.
You can start a conversation by creating a new issue on this repo summarizing
your idea.The Open edX Code of ConductAll community members are expected to follow theOpen edX Code of Conduct.PeopleThe assigned maintainers for this component and other project details may be
found inBackstage. Backstage pulls this data from thecatalog-info.yamlfile in this repo.Reporting Security IssuesPlease do not report security issues in public. Please emailsecurity@openedx.org.Change LogUnreleased[9.5.2] - 2024-02-13RemovedRemove unusedMANAGE_STUDENTS_PERMISSION_ADDEDandMANAGE_STUDENTS_PERMISSION_REMOVEDevents in learning[9.5.1] - 2024-02-12ChangedFixed recursion error when consuming events on the same service that produced them.[9.5.0] - 2024-02-07AddedAdds utility function to reset application state similar to setup/teardown in Django request/response cycle.[9.4.0] - 2024-01-29AddedAdded newCOURSE_ACCESS_ROLE_ADDEDandCOURSE_ACCESS_ROLE_REMOVEDevents in learning[9.3.0] - 2024-01-24ChangedAllow new EVENTS_SERVICE_NAME setting to override SERVICE_VARIANT for data source.[9.2.0] - 2023-11-16AddedAdded new COURSE_NOTIFICATION_REQUESTED event in learning[9.1.0] - 2023-11-07AddedAdded new event TRACKING_EVENT_EMITTED.[9.0.1] - 2023-10-31ChangedFixed key error in merging event producer configs. Previously, setting only one ofenabledorevent_key_fieldwould result in a KeyError being thrown[9.0.0] - 2023-10-04ChangedRe-licensed this repository from AGPL 3.0 to Apache 2.0Breaking change: Restructured EVENT_BUS_PRODUCER_CONFIG[8.9.0] - 2023-10-04AddedAdded newFORUM_THREAD_CREATED,FORUM_THREAD_RESPONSE_CREATED,FORUM_RESPONSE_COMMENT_CREATEDevents in learning subdomain[8.8.0] - 2023-10-02AddedAdded newMANAGE_STUDENTS_PERMISSION_ADDEDandMANAGE_STUDENTS_PERMISSION_REMOVEDevents in learning[8.7.0] - 2023-09-29AddedAdded newEXAM_ATTEMPT_SUBMITTED,EXAM_ATTEMPT_REJECTED,EXAM_ATTEMPT_VERIFIED,EXAM_ATTEMPT_RESET, andEXAM_ATTEMPT_ERROREDevents in learning.[8.6.0] - 2023-08-28AddedAdded generic handler to allow producing to event bus via django settings.[8.5.0] - 2023-08-08ChangedAdded json de/serialization for EventsMetadata[8.4.0] - 2023-07-20AddedAdded newPROGRAM_CERTIFICATE_AWARDEDandPROGRAM_CERTIFICATE_REVOKEDevents in learning subdomainAdded newProgramCertificateDataandProgramDatadata classes supporting the new program certificate events[8.3.0] - 2023-07-10AddedAdded new XBLOCK_CREATED and XBLOCK_UPDATED events in content_authoring.Added new COURSE_CREATED event in content_authoring.Added new CONTENT_LIBRARY_CREATED, CONTENT_LIBRARY_UPDATED and CONTENT_LIBRARY_DELETED events in content_authoring.Added new LIBRARY_BLOCK_CREATED, LIBRARY_BLOCK_UPDATED and LIBRARY_BLOCK_DELETED events in content_authoring.[8.2.0] - 2023-06-08ChangedAdded new USER_NOTIFICATION_REQUESTED event.[8.1.0] - 2023-06-06AddedStore current versions of Avro schemas and add test to ensure valid evolution[8.0.1] - 2023-05-16ChangedFixed event_type of XBLOCK_SKILL_VERIFIED signal[8.0.0] - 2023-05-16ChangedBreaking change: Removesignalargument from consume_events and make_single_consumer[7.3.0] - 2023-05-15ChangedMadesignalargument optional in consume_events in preparation for removal[7.2.0] - 2023-05-03ChangedAdded event type as namespace to generated Avro schemas[7.1.0] - 2023-05-03AddedConfigurable loader for consumer side of Event Bus inopenedx_events.event_bus.Added management command to load configured consumer and start worker.ChangedSwitch fromedx-sphinx-themetosphinx-book-themesince the former is
deprecated.  Seehttps://github.com/openedx/edx-sphinx-theme/issues/184for
more details.[7.0.0] - 2023-03-07ChangedBreaking change: Moved serialize_event_data_to_bytes from openedx_events.event_bus.avro.tests.test_utilities to openedx_events.event_bus.avro.serializerBreaking change: Moved deserialize_bytes_to_event_data from openedx_events.event_bus.avro.tests.test_utilities to openedx_events.event_bus.avro.deserializer[6.0.0] - 2023-02-23ChangedBreaking change: Moved load_all_events() from openedx_events.tests.utils to openedx_events.tooling[5.1.0] - 2023-02-07AddedAdded support for array type.Added new XBLOCK_SKILL_VERIFIED event.Added XBlockSkillVerificationData classes.[5.0.0] - 2023-02-03ChangedBreaking change:send_event_with_custom_metadatachanges to accept a single EventsMetadata object rather than all of the fields that go into one. This only directly affects event bus consumer libraries.AddedAddedCOURSE_CERTIFICATE_CONFIG_CHANGEDandCOURSE_CERTIFICATE_CONFIG_DELETEDsignals for when a course’s certificate configuration is updated or deleted[4.2.0] - 2023-01-24AddedAddedsend_event_with_custom_metadata. This will enable event bus consumers to send the event signal with the same metadata fields that were used when the event was produced.FixedUpdated time metadata to include UTC timezone. The original implementation used utcnow(), which could give different results if the time were ever interpreted to be local time. Seehttps://docs.python.org/3/library/datetime.html#datetime.datetime.utcnowEventsMetadata minorversion is now fully optional, and doesn’t need to be supplied when initializing to get the default of 0.ChangedUpdated send_event with an optional time argument to be used as metadata.[4.1.1] - 2023-01-23ChangedUse collections.abc import to use with python 3.8 and 3.10.[4.1.0] - 2023-01-03AddedAdded new XBLOCK_PUBLISHED, XBLOCK_DUPLICATED and XBLOCK_DELETED signals in content_authoring.Added XBlockData and DuplicatedXBlockData classesAdded custom UsageKeyAvroSerializer for opaque_keys UsageKey.[4.0.0] - 2022-12-01ChangedBreaking changeMake event_metadata parameter in EventBusProducer send API required[3.2.0] - 2022-11-30ChangedAdd event_metadata parameter to EventBusProducer send API.Note:Calling this method with the new argument will throw an exception with older versions of this library that don’t yet support the parameter.[3.1.0] - 2022-11-22AddedConfigurable loader for producer side of Event Bus inopenedx_events.event_bus.[3.0.1] - 2022-10-31FixedFix default value for optional fields from “null” to None[3.0.0] - 2022-10-19Breaking change: Removed (optional) fieldeffortfromCourseCatalogData.Nothing should be relying on this field as it is not used by Course Discovery in Publisher-enabled setups.[2.0.0] - 2022-10-18Breaking change: Removed signalSUBSCRIPTION_LICENSE_MODIFIEDand corresponding data classSubscriptionLicenseData. This should only affect experimental event-bus code (which should also have been deleted by now).[1.0.0] - 2022-09-27Breaking Change: Updated fromDjango 2.0toDjango 3.0.Bump version to 1.x to acknowledge that this is in use in production[0.14.0] - 2022-09-21ChangedBreaking change: Removedshort_descriptionfromCourseCatalogData[0.13.0] - 2022-09-16AddedAdded new event PERSISTENT_GRADE_SUMMARY_CHANGED.Improvements in make upgrade command and requirements files.Manually update requirements files to fix requirements bot issue with pip/setup tools.Change GitHub workflow to community maintained repository health file.[0.12.0] - 2022-08-16ChangedBreaking change: Removedorgandnumberfields fromCourseCatalogData(should only affect unreleased event-bus code, though)[0.11.1] - 2022-07-28FixedHandle optional (None) values for custom serializers[0.11.0] - 2022-07-21AddedAdded new content_authoring module with new COURSE_CATALOG_INFO_CHANGED signal[0.10.0] - 2022-05-20ChangedBREAKING CHANGE: Split AvroAttrsBridge into schema, serialization, and deserialization phases[0.9.1] - 2022-05-20ChangedRemove assigned_email from SubscriptionLicenseData[0.9.0] - 2022-04-28ChangedUpdated AvroAttrsBridge to handle optional/nullable fields[0.8.3] - 2022-04-26ChangedUpdated AvroAttrsBridge to create schemas from signal data dict rather than individual attrs classes[0.8.2] - 2022-04-13ChangedChanged openedx_events.learning.data.DiscussionTopicContext to make the group id optionalChanged DiscussionTopicContext to add acontextattribute[0.8.1] - 2022-03-03AddedAdded missing field for event COURSE_DISCUSSIONS_CHANGED[0.8.0] - 2022-02-25AddedAdded COURSE_DISCUSSIONS_CHANGED for discussion eventChangedChanged openedx_events/enterprise/LicenseLifecycle class to openedx_events/enterprise/SubscriptionLicenseDataChanged LicenseCreated signal class to SUBSCRIPTION_LICENSE_MODIFIED signal class[0.7.1] - 2022-01-13AddedAdded data definition for enterprise/LicenseLifecycleAdded LicenseCreated signal definition[0.7.0] - 2022-01-06AddedAdded AvroAttrsBridge class to convert between avro standard and attrs classes[0.6.0] - 2021-09-15AddedAdd custom formatting class for events responses.Add a way to use send method instead of send_robust while testing.ChangedRemove unnecessary InstantiationError exception.Default is send_robust instead of send unless specified otherwise.[0.5.1] - 2021-08-26ChangedRemove TestCase inheritance from OpenEdxTestMixin.[0.5.0] - 2021-08-24AddedUtilities to use while testing in other platforms.[0.4.1] - 2021-08-18ChangedRemove raise_exception assignment in events metadata.[0.4.0] - 2021-08-18AddedPreliminary Open edX events definitions.[0.3.0] - 2021-08-18AddedAdd tooling needed to create and trigger events in Open edX platform.Add Data Attribute classes used as arguments by Open edX Events.[0.2.0] - 2021-07-28ChangedUpdate repository purpose.Changed max-doc-length from 79 to 120 following community recommendation.[0.1.3] - 2021-07-01ChangedUpdate setup.cfg with complete bumpversion configuration.[0.1.2] - 2021-06-29ChangedUpdate documentation with current organization info.[0.1.1] - 2021-06-29AddedAdd Django testing configuration.[0.1.0] - 2021-04-07AddedFirst release on PyPI.