Skip to main content

A simple Django package to integrate Web Push Notification in your Application

Project description

Django-Webpush
==============

Django-Webpush is a Package made for integrating and sending `Web Push
Notification <https://developer.mozilla.org/en/docs/Web/API/Push_API>`__
in Django Application. **This is a Work in Progress package. As the `Web
Push Notification specification <https://www.w3.org/TR/push-api/>`__ is
still in draft, things may change soon. So keep updated.**

*Currently, it Supports Sending Push Notification to **Firefox 46+**
Only. Chrome Support will be added soon. But we still keep the
subscription infor of Chrome users. So in future when we make the
upgrade, it will be possible to send notification to them*

--------------

Installation and Setup
----------------------

You can install it easily from pypi by running

::

pip install django-webpush

After installing the package, add ``webpush`` in in your
``INSTALLED_APPS`` settings

::

INSTALLED_APPS = (
...
'webpush',
)

Then include ``webpush`` in the ``urls.py``

::

urlpatterns =

url(r'^webpush/', include('webpush_notification.urls'))
]

Then run Migration by **``python manage.py migrate``**

Adding Web Push Information in Template
---------------------------------------

So in template, you need to load ``webpush_notifications`` custom
template tag by following: > - If you are using built in templating
engine, add ``{% load webpush_notifications %}`` in the template > - If
you are using jinja or other templating engine, you can manually add the
html header and button and other information. Documentation for them is
coming soon. Working on getting a automated way for jinja users. If you
would like to add support for them, patch are very much welcome.

Next, inside the ``<head></head>`` tag add ``{% webpush %}``. Like
following

::

<head>
{% webpush %}
</head>

Next, inside the ``<body></body>`` tag, insert ``{% webush_button %}``
where you would like to see the **Subscribe to Push Messaging** Button.
Like following

::

<body>
<p> Hello World! </p>
{% webpush_button %}
</body>

**Note:** The Push Notification Button will show only if the user is
logged in or any ``group`` named is passed through ``webpush``
context

***If you would like to mark the subscription as a group, like all
person subscribe for push notification from the template should be
marked as group and would get same notification, you should pass a
``webpush`` context to the template through views. The ``webpush``
context should have a dictionary like ``{"group": group_name}``*** .
Like following

::

webpush = {"group": group_name } # The group_name should be the name you would define.

return render(request, 'template.html', {"webpush":webpush})

**Note:** If you dont pass ``group`` through the ``webpush``
context, only logged in users can see the button for subscription
and able to get notification.

--------------

Sending Web Push Notification
-----------------------------

A Web Push generally have a header and body. According to the W3C
Specification, the data should be encrypted in transmission. the data is
addressed as payload generally. Also a TTL header should be included
indicating how much time the web push server store the data if the user
is not online. So in order to send notification, see below.

- If you would like to send notification to a specific group, do like
following:

::

from webpush import send_group_notification

payload = {"head": "Welcome!", "body": "Hello World"}

send_group_notification(group_name="my_group", payload=payload, ttl=1000)
# All subscribe subscribe through "my_group" will get a web push notification. A ttl of 1000 is passed so the web push server will store the data maximum 1000 milliseconds if any user is not online

- If you would like to send Notification to a specific user, do like
following \`\`\` from webpush import send\_user\_notification

payload = {"head": "Welcome!", "body": "Hello World"}

send\_user\_notification(user=user, payload=payload, ttl=1000) # Here
in the user parameter, a user object should be passed # The user will
get notification to all of his subscribed browser. A user can
subscribe many browsers. \`\`\` **And the subscribers will get a
notification like** |Web Push Notification|

License
=======

--------------

Copyright © 2016 by Safwan Rahman

This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 3 of the License, or (at your
option) any later version.

This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
Public License for more details.

You should have received a copy of the GNU General Public License along
with this program. If not, see http://www.gnu.org/licenses/.

.. |Web Push Notification| image:: http://i.imgur.com/VA6cxRc.png

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-webpush-0.1.1.tar.gz (19.2 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