unicef-notification 1.4.1
Django package that handles sending of notifications

UNICEF Notification
===================


Notification is a library that provides handles sending of notifications.


Installation
------------

    pip install unicef-notification


Setup
-----

Add unicef_notification to INSTALLED_APPS in settings::

    INSTALLED_APPS = [
        ...
        'post_office',
        'unicef_notification',
    ]

Add POST_OFFICE configuration to settings::

    POST_OFFICE = {
        'DEFAULT_PRIORITY': 'now',
        'BACKENDS': {
            'default': 'djcelery_email.backends.CeleryEmailBackend'
            }
    }

Update TEMPLATES in settings by adding EmailTemplateLoader and marking APP_DIRS as False::

    TEMPLATES = [
        ...
        'APP_DIRS': False,  # False because we set loaders manually below
        'OPTIONS': {
        'loaders': [
            'django.template.loaders.app_directories.Loader',
            'unicef_notification.loaders.EmailTemplateLoader',
        ],
        ...
        ]


Optional
--------

If you want to override the notification template directory to be used::

    UNICEF_NOTIFICATION_TEMPLATE_DIR = 'notifications'

This is the directory where notifcation templates are to be placed in your applications.
These are loaded with the `upload_notifications` management command.

If you want to override the email template prefix::

    UNICEF_NOTIFICATION_EMAIL_TEMPLATE_PREFIX = 'email-templates/'

Usage
-----

Create notification template in defined `UNICEF_NOTIFICATION_TEMPLATE_DIR` from setup::

    name = "<unique name for notification">
    defaults = {
        "description": "Sample notification",
        "subject": "Subject of notification",
        "content": "Content of notification",
        "html_content": "Notificaton content in HTML format",
    }

Update the notifications::

    python manage.py update_notifications

Send notification with template::

    from unicef_notification.utils import send_notification_with_template

    context = {}
    send_notification_with_template(
        ["to@example.com"],
        "<name-of-template>",
        context,
    )

Send notification without a template::

    from unicef_notification.utils import send_notification

    send_notification(
        ["to@example.com"],
        subject="Subject of notification",
        content="Content of notification",
        html_content="Notification content in HTML format",
    )


Contributing
============

Environment Setup
-----------------

To install the necessary libraries::

    $ make install


Coding Standards
----------------

See `PEP 8 Style Guide for Python Code <https://www.python.org/dev/peps/pep-0008/>`_ for complete details on the coding standards.

To run checks on the code to ensure code is in compliance::

    $ make lint


Testing
-------

Testing is important and tests are located in `tests/` directory and can be run with::

    $ make test

Coverage report is viewable in `build/coverage` directory, and can be generated with


Project Links
-------------

 - Continuos Integration - https://circleci.com/gh/unicef/unicef-notification/tree/develop
 - Source Code - https://github.com/unicef/unicef-notification