semvec/pypi-packages huggingface dataset:
pingpong 0.0.1
Django library that makes triggering emails easier
License: MIT
Keywords: django

`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(":")
        ...