edX Automated Communication Engine (A.C.E.)
###########################################
|License: AGPL v3| |Python CI| |Publish package to PyPi| |Status| |pypi-badge| |travis-badge| |codecov-badge|
|doc-badge| |pyversions-badge|
Purpose
The automated communication engine <https://edx-ace.readthedocs.io/en/latest/>
_, A.C.E. for short, is a Django app
for messaging learners on the Open edX platform. This
app can be installed in any Open edX project, but has only been tested with edx-platform
. Email delivery
(via Sailthru and Django Email)
are the currently supported delivery channels. In the future we may add support for other delivery channels such as push
notifications.
Getting Started
For instructions on starting local development, see Getting Started <https://github.com/openedx/edx-ace/blob/master/docs/getting_started.rst>
_.
Getting Help
Documentation
See the documentation
_. If you need more help see below.
.. _the documentation: https://edx-ace.readthedocs.io/en/latest/
More Help
If you're having trouble, we have discussion forums at
https://discuss.openedx.org where you can connect with others in the
community.
Our real-time conversations are on Slack. You can request a Slack invitation
, then join our community 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/edx-ace/issues
For more information about these options, see the Getting Help
_ page.
.. _Slack invitation: https://openedx.org/slack
.. _community Slack workspace: https://openedx.slack.com/
.. _Getting Help: https://openedx.org/getting-help
License
The code in this repository is licensed under the AGPL 3.0 unless
otherwise noted.
Please see LICENSE.txt
for details.
Contributing
Contributions are very welcome.
Please read How To Contribute <https://openedx.org/r/how-to-contribute>
_ for details.
Even though they were written with edx-platform
in mind, the guidelines
should be followed for Open edX code in general.
PR description template should be automatically applied if you are sending PR from github interface; otherwise you
can find it
at PULL_REQUEST_TEMPLATE.md <https://github.com/openedx/edx-ace/blob/master/.github/PULL_REQUEST_TEMPLATE.md>
_
Issue report template should be automatically applied if you are sending it from github UI as well; otherwise you
can find it at ISSUE_TEMPLATE.md <https://github.com/openedx/edx-ace/blob/master/.github/ISSUE_TEMPLATE.md>
_
The Open edX Code of Conduct
All community members are expected to follow the Open edX Code of Conduct
_.
.. _Open edX Code of Conduct: https://openedx.org/code-of-conduct/
People
The assigned maintainers for this component and other project details may be
found in Backstage
_. Backstage pulls this data from the catalog-info.yaml
file in this repo.
.. _Backstage: https://open-edx-backstage.herokuapp.com/catalog/default/component/edx-ace
Reporting Security Issues
Please do not report security issues in public. Please email security@openedx.org.
.. |pypi-badge| image:: https://img.shields.io/pypi/v/edx-ace.svg
:target: https://pypi.python.org/pypi/edx-ace/
:alt: PyPI
.. |travis-badge| image:: https://travis-ci.com/edx/edx-ace.svg?branch=master
:target: https://travis-ci.com/edx/edx-ace
:alt: Travis
.. |codecov-badge| image:: http://codecov.io/github/edx/edx-ace/coverage.svg?branch=master
:target: http://codecov.io/github/edx/edx-ace?branch=master
:alt: Codecov
.. |doc-badge| image:: https://readthedocs.org/projects/edx-ace/badge/?version=latest
:target: http://edx-ace.readthedocs.io/en/latest/
:alt: Documentation
.. |pyversions-badge| image:: https://img.shields.io/pypi/pyversions/edx-ace.svg
:target: https://pypi.python.org/pypi/edx-ace/
:alt: Supported Python versions
.. |license-badge| image:: https://img.shields.io/github/license/edx/edx-ace.svg
:target: https://github.com/openedx/edx-ace/blob/master/LICENSE.txt
:alt: License
.. |License: AGPL v3| image:: https://img.shields.io/badge/License-AGPL_v3-blue.svg
:target: https://www.gnu.org/licenses/agpl-3.0
.. |Python CI| image:: https://github.com/openedx/edx-ace/actions/workflows/ci.yml/badge.svg
:target: https://github.com/openedx/edx-ace/actions/workflows/ci.yml
.. |Publish package to PyPi| image:: https://github.com/openedx/edx-ace/actions/workflows/pypi-publish.yml/badge.svg
:target: https://github.com/openedx/edx-ace/actions/workflows/pypi-release.yml
.. |Status| image:: https://img.shields.io/badge/Status-Maintained-brightgreen
Change Log
..
All enhancements and patches to edx_ace will be documented
in this file. It adheres to the structure of http://keepachangelog.com/ ,
but in reStructuredText instead of Markdown (for ease of incorporation into
Sphinx documentation and the PyPI description).
This project adheres to Semantic Versioning (http://semver.org/).
.. There should always be an "Unreleased" section for changes pending release.
Unreleased
[1.8.0] - 2024-03-06
- Added support for
Python 3.12
- Dropped support for
Django 3.2
[1.7.0] - 2023-07-21
* Switch from ``edx-sphinx-theme`` to ``sphinx-book-theme`` since the former is
deprecated
* Added support for django 4.2
[1.6.1] - 2023-02-07
[1.5.0] - 2022-02-15
* Added support for Django40
* Removed support for Django22, 30 and 31
[1.4.1] - 2021-12-06
- Adds in the ability to override frequency caps for Braze emails. Can be accessed via
Message options using the key
override_frequency_capping
. All emails containing the
transactional
Message option will also override frequency caps.
[1.4.0] - 2021-11-08
* Deprecate the action_links property
* Add a get_action_links method and template tag to allow passing arguments to action links
[1.3.1] - 2021-08-17
- Adjust name
handles_delivery_for_message
to overrides_delivery_for_message
[1.3.0] - 2021-08-16
* New channel method ``handles_delivery_for_message`` for allowing a default channel
to claim a message, even if it would normally be delivered to the configured
transactional channel.
* Braze: Will handle any message defined in ``ACE_CHANNEL_BRAZE_CAMPAIGNS`` (using the
above new feature) to steal campaign messages from the transactional channel as
needed.
[1.2.0] - 2021-07-16
- Added support for django 3.2
[1.1.1] - 2021-07-09
* Removed upper constraint from Django
[1.1.0] - 2021-03-26
- Braze: Add ACE_CHANNEL_BRAZE_FROM_EMAIL setting to override the normal from address
- Sailthru: Remove Braze rollout waffle flag
[1.0.1] - 2021-03-15
* Braze: Add an unsubscribe action link
* Braze: Don't ask Braze to inline css, as ACE templates already have inline css
[1.0.0] - 2021-03-11
-
BREAKING: Recipient objects now take lms_user_id
instead of username
-
New braze_email
backend, needing the following new configuration:
- ACE_CHANNEL_BRAZE_API_KEY
- ACE_CHANNEL_BRAZE_APP_ID
- ACE_CHANNEL_BRAZE_REST_ENDPOINT (like
rest.iad-01.braze.com
) - ACE_CHANNEL_BRAZE_CAMPAIGNS (an optional dictionary of ACE message names to Braze campaign identifiers)
[0.1.18] - 2020-11-19
* Updated he travis-badge in README.rst to point to travis-ci.com
[0.1.17] - 2020-10-19
- Use IntEnum to avoid silent failure in value comparisons
[0.1.16] - 2020-10-17
* Fixed Enum usage for Python 3.8 to avoid TypeError when comparing values
[0.1.15] - 2020-03-11
- Added support for Python 3.8
- Removed support for Django 2.0 and 2.1
[0.1.14] - 2020-03-11
* Fix trivial warning from deprecated use of attr library.
[0.1.13] - 2019-12-06
[0.1.12] - 2019-10-16
* Reply_to field added in emails.
[0.1.10] - 2018-11-01
- Django lazy text translations are handled properly.
[0.1.9] - 2018-07-13
* Updated delivery logging
[0.1.0] - 2017-08-08
Added