Metadata-Version: 2.1
Name: edx-ace
Version: 1.12.1
Summary: Framework for Messaging
Home-page: https://github.com/openedx/edx-ace
Author: edX
Author-email: oscm@edx.org
License: AGPL 3.0
Keywords: Django edx
Classifier: Development Status :: 3 - Alpha
Classifier: Framework :: Django
Classifier: Framework :: Django :: 4.2
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)
Classifier: Natural Language :: English
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.12
Description-Content-Type: text/x-rst
Provides-Extra: sailthru
Provides-Extra: push_notifications
License-File: LICENSE.txt

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 page <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 `help`_ page.

.. _Slack invitation: https://openedx.org/slack
.. _community Slack workspace: https://openedx.slack.com/
.. _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
--------------------

* Updated code coverage target in https://github.com/openedx/edx-ace/pull/189
* Updated Python Requirements in https://github.com/openedx/edx-ace/pull/199
* **Full Changelog**: https://github.com/openedx/edx-ace/compare/v1.6.0...v1.6.1

[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
---------------------

* Django22 Support.

[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] First release on PyPI.
