# django-ilmoitin

[![Latest PyPI version](https://badge.fury.io/py/django-ilmoitin.svg)](https://pypi.python.org/pypi/django-ilmoitin)
[![Python versions](https://img.shields.io/pypi/pyversions/django-ilmoitin.svg)](https://pypi.python.org/pypi/django-ilmoitin)

A templated Django messaging library

# Installation

1. `pip install django-ilmoitin`

2. Add `django_ilmoitin` to `INSTALLED_APPS`.

# Usage

1. `django-ilmoitin` uses [`django-mailer`](https://github.com/pinax/django-mailer)
to send emails, so you need to configure the `MAILER_EMAIL_BACKEND` setting to let
[`django-mailer`](https://github.com/pinax/django-mailer) know, how to actually
send the mail:

```python
MAILER_EMAIL_BACKEND = "your.actual.EmailBackend"
```

2. Create a `notifications.py` file in django app and register your notification types:

```python
from django_ilmoitin.registry import notifications

notifications.register("event_created", "Event created")
```

3. Create a `dummy_context.py` file in django app and add dummy context data:

```python
from django_ilmoitin.dummy_context import dummy_context

from .models import MyModel

model = MyModel(foo="bar")

dummy_context.context.update({
    "model": model
})
```

4. Import notifications and dummy context in your apps.py:

```python
from django.apps import AppConfig


class ExampleConfig(AppConfig):
    name = "example"

    def __init__(self, *args, **kwargs):
        super(ExampleConfig, self).__init__(*args, **kwargs)
        import example.notifications

    def ready(self):
        import example.dummy_context
```

5. Go to django admin and add notification templates to your notifications

6. Send notifications:

```python
from django_ilmoitin.utils import send_notification

context = {
    "foo": "bar",
}
send_notification("foo@bar.com", "event_created", context)

```

## Code format

This project uses [`black`](https://github.com/ambv/black) for Python code formatting.
We follow the basic config, without any modifications. Basic `black` commands:

* To let `black` do its magic: `black .`
* To see which files `black` would change: `black --check .`
