Skip to main content

django-delayed-notifications provides tracking of notifications, and delayed sending.

Project description

Notifications

This application sends notifications to the user and emails addresses. It stores messages into a database, and sends can be delayed through a cron task.

Installation

$ pip install django-delayed-notifications

Add django_notifications to your INSTALLED_APPS:

INSTALLED_APPS = (
    ...
    "django_notifications",
    ...
)

Apply the migrations:

$ ./manage.py migrate

Usage

Instead of sending a raw email, with the send_mail django function, you can create a Notification object and program the sending.

Notification creation

from pathlib import Path
from django_notifications.models import Notification, Attachment
from django.core.files import File
from django.utils.timezone import now
from datetime import timedelta

# **Basic creation**
my_instance = "<A random object in the application>"
notification = Notification.objects.create(
    subject="My beautiful email",
    text_body="My text body",
    html_body="""<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="x-apple-disable-message-reformatting">
    <title>My beautiful email</title>
</head>
<body>My HTML body</body>
</html>
    """,
    from_email="foo@example.org",  # Optional

)

# ** Related objects management **
# It is possible to attach an object to the email (Optional)
notification.related_object = my_instance

# ** Related objects states management **
# When using FSM, you can provide the states from / to (Optional)
notification.state_from = "active"
notification.state_to = "processing"

# **Attachments management**
_attachment = Attachment.objects.create(
    notification=notification,
    attachment_file=File(Path("<my_file>").open("r"), name="my_file.txt")
)

# **Recipients management**
# You can provide users
notification.recipients.set("<User instance>", "<User instance>", ...)
notification.save()

# And / Or provides email address, `\n` separated
notification.email_recipients = "\n".join([
    "foo@example.org", "bar@example.org"
])
notification.save()

# You can set the delayed sending date
notification.delayed_sending_at = now() + timedelta(days=1)
notification.save()

# Or you can send the email immediately
notification.send()

Management command

The application provides a management command to send the emails:

$ ./manage.py send_notifications
12 notifications sent.

Templates

The application provides some basic templates for emails.

Admin

This application provides an admin interface for notifications.

Notes

The application is available in English and translated to French.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django_delayed_notifications-0.10.2.tar.gz (5.3 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

django_delayed_notifications-0.10.2-py3-none-any.whl (32.9 kB view details)

Uploaded Python 3

File details

Details for the file django_delayed_notifications-0.10.2.tar.gz.

File metadata

File hashes

Hashes for django_delayed_notifications-0.10.2.tar.gz
Algorithm Hash digest
SHA256 4b4827e9bf8ebf0edcab077783120d80bee6094542755e194e0d6b4f6b51807b
MD5 5e349fc02811b3c91b4dcb4795e8f6ef
BLAKE2b-256 9352085eed164e58d99128cacc1802c0a8e806cc8a0a6fb6ab9a580674d99af9

See more details on using hashes here.

File details

Details for the file django_delayed_notifications-0.10.2-py3-none-any.whl.

File metadata

File hashes

Hashes for django_delayed_notifications-0.10.2-py3-none-any.whl
Algorithm Hash digest
SHA256 1e692a62a4bb199a52bb4fde1c8adcf51e111c9ad659fc39df792614e3b778a3
MD5 4e3c3bf736e9f49adfa956941888abc9
BLAKE2b-256 3e98a439274397da84a7f8e59c67dfb554014febcdc8823320cc27b9254dfa0d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page