Skip to main content

Django library that makes triggering emails easier

Project description

`pingpong` is a library to aimed at simplifying things thing that should be easy
in django.

## Installation ##

1. Install lib with pip:

`pip install pingpong`

**- OR -**

Put the "pingpong" directory somewhere in your python path

2. Add "pingpong" to your installed apps (in the settings.py file)

## A better way to fire off emails

from pingpong.email import render_to_email

def some_function():

template = "emails/muffins.email"
context = { "your_mom": "Betty Crocker", "muffin_type": "blueberry" }
recipients = ['somebody@example.com']

# send an email!
render_to_email(template, context, recipients)

And the template, `emails/my_email_template.email` would be in your main
templates folder:

Delicious muffins thanks to {{ your_mom }}


Hi friend,

I'm writing to let you know that {{ your_mom }} made some superb
{{ muffin_type }} muffins. Please tell her thank you!

Thanks,
A Robot

The first non-blank line is the subject, everything following is the message.

Subject:

Delicious muffins thanks to Betty Crocker

Message:

I'm writing to let you know that Betty Crocker made some superb
blueberry muffins. Please tell her thank you!

Thanks,
A Robot

Whitespace is stripped from the beginning and end of the message.

## Passing system events to your app

set up listeners:

# listeners.py

from pingpong.utils import pong

@pong("dailycron")
def email_admins_about_daily_activity(ping_name, args, kwargs, **kw):
...


# models.py

... your models...

import listeners

Then you trigger all functions listening to "dailycron" like so:

$ python manage.py pong dailycron

If you pass extra args to the management command they will get passed along...

$ python manage.py pong cachecleared memcache:38174

In this case we're letting the app know that memcache on port 38174 just got
cleared.

from pingpong.utils import pong

@pong("cachecleared")
def warm_up_cache(ping_name, args, kwargs, **kw):
assert ping_name == "cachecleared"
assert args[0] == "memcache:38174"

cache_type, port = args[0].split(":")
...

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

pingpong-0.0.1.tar.gz (3.3 kB view hashes)

Uploaded Source

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