Metadata-Version: 2.0
Name: dj-webhooks
Version: 0.2.0
Summary: Django + Webhooks Made Easy
Home-page: https://github.com/pydanny/dj-webhooks
Author: Daniel Greenfeld
Author-email: pydanny@gmail.com
License: BSD
Keywords: dj-webhooks
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: Framework :: Django
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: BSD License
Classifier: Natural Language :: English
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3.3
Classifier: Programming Language :: Python :: 3.4
Requires-Dist: django (>=1.5.5)
Requires-Dist: webhooks (>=0.3.1)
Requires-Dist: django-jsonfield (>=0.9.12)
Requires-Dist: django-model-utils (>=2.0.2)
Requires-Dist: django-rq (>=0.6.1)

=============================
dj-webhooks
=============================

.. image:: https://pypip.in/d/dj-webhooks/badge.png
        :target: https://pypi.python.org/pypi/dj-webhooks

.. image:: https://badge.fury.io/py/dj-webhooks.png
    :target: https://badge.fury.io/py/dj-webhooks

.. image:: https://pypip.in/wheel/dj-webhooks/badge.png
    :target: https://pypi.python.org/pypi/dj-webhooks/
    :alt: Wheel Status

.. image:: https://travis-ci.org/pydanny/dj-webhooks.png?branch=master
    :target: https://travis-ci.org/pydanny/dj-webhooks

Django + Webhooks Made Easy

The full documentation is at https://dj-webhooks.readthedocs.org.

Requirements
------------

* django>=1.5.5
* django-jsonfield>=0.9.12
* django-model-utils>=2.0.2
* django-rq>=0.6.1
* webhooks>=0.3.1

Quickstart
----------

Install dj-webhooks::

    pip install dj-webhooks

Configure some webhook events:

.. code-block:: python

    # settings.py
    WEBHOOK_EVENTS = (
        "purchase.paid",
        "purchase.refunded",
        "purchase.fulfilled"
    )

Add some webhook targets:

.. code-block:: python

    from django.contrib.auth import get_user_model
    User = get_user_model()
    user = User.objects.get(username="pydanny")

    from webhooks.models import Webhook
    WebhookTarget.objects.create(
        owner=user,
        event="purchase.paid",
        target_url="https://mystorefront.com/webhooks/",
        header_content_type=Webhook.CONTENT_TYPE_JSON,
    )

Then use it in a project:

.. code-block:: python

    from django.contrib.auth import get_user_model
    User = get_user_model()
    user = User.objects.get(username="pydanny")

    from djwebhooks.decorators import hook

    from myproject.models import Purchase

    # Event argument helps identify the webhook target
    @hook(event="purchase.paid")
    def send_purchase_confirmation(purchase, owner): # Webhook_owner also helps identify the webhook target
        return {
            "order_num": purchase.order_num,
            "date": purchase.confirm_date,
            "line_items": [x.sku for x in purchase.lineitem_set.filter(inventory__gt=0)]
        }

    for purchase in Purchase.objects.filter(status="paid"):
        send_purchase_confirmation(purchase=purchase, owner=user)

In a queue using django-rq
----------------------------

Assuming you are running Redis and also have django-rq configured:

.. code-block:: python

    from django.contrib.auth import get_user_model
    User = get_user_model()
    user = User.objects.get(username="pydanny")

    # import redis hook
    from djwebhooks.decorators import redis_hook

    from myproject.models import Purchase

    # Event argument helps identify the webhook target
    @redis_hook(event="purchase.paid")
    def send_purchase_confirmation(purchase, owner): # Webhook_owner also helps identify the webhook target
        return {
            "order_num": purchase.order_num,
            "date": purchase.confirm_date,
            "line_items": [x.sku for x in purchase.lineitem_set.filter(inventory__gt=0)]
        }

    for purchase in Purchase.objects.filter(status="paid"):
        job = send_purchase_confirmation(purchase=purchase, owner=user)



Requirements
-------------

* Python 2.7.x or 3.3.2 or higher
* Django 1.5 or higher

Features
--------

* Synchronous webhooks
* Delivery tracking via Django ORM.

Planned Features
-----------------

* Options for asynchronous webhooks
* Delivery tracking via Redis and other write-fast datastores.




History
-------

0.2.0 (2014-05-15)
++++++++++++++++++

* Refactored the senders to be very extendable.
* Added an ORM based sender.
* Added a redis based sender that uses django-rq.
* Added a `redis-hook` decorator.
* Added admin views.
* Ramped up test coverage to 89%.
* setup.py now includes all dependencies.


0.1.0 (2014-05-12)
++++++++++++++++++

* First release on PyPI.

