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.1.tar.gz (4.0 MB view details)

Uploaded Source

Built Distribution

File details

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

File metadata

File hashes

Hashes for django_delayed_notifications-0.10.1.tar.gz
Algorithm Hash digest
SHA256 b4a435c3f0a0bd7b2f4631695847915abf3388977d27766100418878aa03bb59
MD5 e5ca8693d0f170f1098947bf8be14d78
BLAKE2b-256 399924fc73eb88fa89fb6117b29c0a5bdf4d684ceca809d5f2c3d10a9c90b59b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for django_delayed_notifications-0.10.1-py3-none-any.whl
Algorithm Hash digest
SHA256 fd64e54befc14df2ea9022eb8557746a6a07448bf929bee820babd86315b16af
MD5 039e95d42c3335e6d9440120b0ca36ef
BLAKE2b-256 02e4a218284f2cce86a1de9579005ce2fafeee5f231d8723cb13e05501ee33fa

See more details on using hashes here.

Supported by

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