unicef_notification 0.2.1
Django package that handles sending of notifications
License: Apache 2 License

# 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