Package: dpnm
Django Push Notifications=========================This package makes it easy to support Push notifications. It workstogether with third party services such as ``ZeroPush``.You can easily add permissions to push devices by chaining those devicesto a notification setting. For registering a new push device you can addcustom permissions.Installation------------To install the package on your machine you can run the PIP install:::pip install django-pnmConfiguration-------------First you have to add ``push_notifications`` to your installed apps:.. code:: pythonINSTALLED_APPS = (...'push_notifications',)To setup the package you have to add a ``DJANGO_PUSH_NOTIFICATIONS``into your settings:.. code:: pythondef Settings(Configuration):# ...DJANGO_PUSH_NOTIFICATIONS = {'SERVICE': 'push_notifications.services.zeropush.ZeroPushService','AUTH_TOKEN': '123123123'}The ``SERVICE`` Key can be set to the type of service you use. In thisexample we use the ``ZeroPushService``. With the ``ZeroPush`` Service weare required to add a ``AUTH_TOKEN`` to the ``Configuration``.Don't forget to run the migrations~~~~~~~~~~~~~~~Then run the migrations by running: ``python manage.py migrate``**Note**: Right now, only ``ZeroPush`` is available. More services willbe available soon.Django REST Framework support-------------There are also 2 endpoints for you available. These can be used to register and unregister a push device. The endpoints are Auth protected with the default settings of your Django REST Framework set up.To enable the ``unregister`` and ``register`` endpoints you can add the following to your ``urls.py`` file:.. code:: pythonurl(r'^notifications/', include('push_notifications.urls')),Usage-----Register a device~~~~~~~~~~~~~~~~~To register a new device you can use the ``register_push_device`` methodin ``utils``:.. code:: pythonfrom push_notifications.utils from register_push_devicetoken = "<The device token>"register_push_device(user, token)You can also pass notification permissions directly to the``register_push_device`` method:.. code:: pythonregister_push_device(user, token, ['likes', 'comments'])Add permissions~~~~~~~~~~~~~~~To add an notification permission to a push device you can use the``add_permission`` method on the ``device`` object:.. code:: pythondevice.add_permission('likes')Or adding multiple permissions.. code:: pythondevice.add_permissions(['likes', 'comments'])Add all the permission for the devices that the user owns... code:: pythonuser.push_devices.add_permissions(['likes', 'comments'])Remove permissions~~~~~~~~~~~~~~~~~~To remove a notification permission you can use ``remove_permission``method on the ``device`` object:.. code:: pythondevice.remove_permissions('likes')Or removing multiple permissions.. code:: pythondevice.remove_permissions(['likes', 'comments'])Remove all the permission for the devices that the user owns... code:: pythonuser.push_devices.remove_permissions(['likes', 'comments'])Send a notification~~~~~~~~~~~~~~~~~~~To send a notification to a certain permission group you can call``send_push_notification`` in ``utils``:.. code:: pythonfrom push_notifications import send_push_notificationfrom datetime import timedeltasend_push_notification('likes', 'This is the message', sound="annoyingSound.mp3",badge_number=1info={"extra": "payload","in": "notification"},expiry=timedelta(days=30))Description^^^^^^^^^^^``send_push_notification(notify_type, message, **kwargs)``**kwargs** - ``sound``: The sound that has to be played when sending thenotification - ``badge_number``: The badge\_number that has to bedisplayed **(iOS Only)** - ``info``: Extra payload that comes along thenotification - ``expiry``: The expiry of the notification **Acceptstimedelta and datetime object**Send a notification to one device~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~To send a notification to a specific device you can use the``send_push_notification`` on the ``device`` object.. code:: pythondevice.send_push_notification('likes', 'This is the message', sound="annoyingSound.mp3",badge_number=1info={"extra": "payload","in": "notification"},expiry=timedelta(days=30))It accepts the same parameters as the global ``send_push_notification``in ``utils``.Send a notification to one user~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~To send a notification to a user and all its devices you can use the``send_push_notification`` on the ``push_devices`` name in your userobject:.. code:: pythonuser.push_devices.send_push_notification('likes', 'This is the message',sound="annoyingSound.mp3",badge_number=1info={"extra": "payload","in": "notification"},expiry=timedelta(days=30))