{ "info": { "author": "Marcos Gabarda", "author_email": "hey@marcosgabarda.com", "bugtrack_url": null, "classifiers": [ "Environment :: Web Environment", "Framework :: Django", "License :: OSI Approved :: MIT License" ], "description": "=============\nDjango Snitch\n=============\n\n.. image:: https://travis-ci.org/marcosgabarda/django-snitch.svg?branch=master\n :target: https://travis-ci.org/marcosgabarda/django-snitch\n\n.. image:: https://coveralls.io/repos/github/marcosgabarda/django-snitch/badge.svg?branch=master\n :target: https://coveralls.io/github/marcosgabarda/django-snitch?branch=master\n\nDjango app made to integrate generic events that create notifications that\ncan be sent to users using several backends.\n\nBy default, it integrates **push notifications** and **email** to send the\nnotifications.\n\nMade with Python 3 and Django with :heart:.\n\nQuick start\n-----------\n\n**1** Install using pip:\n\n.. code-block:: bash\n\n pip install django-snitch\n\n**2** Add \"snitch\" to your INSTALLED_APPS settings like this:\n\n.. code-block:: python\n\n INSTALLED_APPS += ('snitch',)\n\n**3** Create an ``events.py`` file in your app to register the events:\n\n.. code-block:: python\n\n import snitch\n from snitch.backends import PushNotificationBackend, EmailNotificationBackend\n\n ACTIVATED_EVENT = \"activated\"\n CONFIRMED_EVENT = \"confirmed\"\n\n\n @snitch.register(ACTIVATED_EVENT)\n class ActivatedHandler(snitch.EventHandler):\n title = \"Activated!\"\n\n\n @snitch.register(CONFIRMED_EVENT)\n class ConfirmedHandler(snitch.EventHandler):\n title = \"Confirmed!\"\n notification_backends = [PushNotificationBackend, EmailNotificationBackend]\n\n # Custom configuration for email backend\n template_email_kwargs = {\"template_name\": \"email.html\"}\n template_email_async = False\n\n def audience(self):\n return get_user_model().objects.all()\n\n\n**4** Use ``dispatch`` decorator to dispatch the event when a function is called:\n\n.. code-block:: python\n\n from django.db import models\n from django.utils import timezone\n\n import snitch\n from snitch.models import AbstractNotification\n from tests.app.events import ACTIVATED_EVENT, CONFIRMED_EVENT\n\n\n class Stuff(models.Model):\n \"\"\"Simple stuff model with status.\"\"\"\n\n IDLE, ACTIVE, CONFIRMED = 0, 1, 2\n status = models.PositiveIntegerField(default=IDLE)\n activated_at = models.DateTimeField(null=True, blank=True)\n confirmed_at = models.DateTimeField(null=True, blank=True)\n\n @snitch.dispatch(ACTIVATED_EVENT)\n def activate(self):\n self.activated_at = timezone.now()\n\n @snitch.dispatch(CONFIRMED_EVENT)\n def confirm(self):\n self.confirmed_at = timezone.now()\n\n\nCustom Notification model\n-------------------------\n\nYou can, in the same way that ``django.contrib.auth.model.User`` works, swap the\nNotification model, to customize it.\n\nIn order to do that, you should create a model that inherits from\n``AbstractNotification``:\n\n.. code-block:: python\n\n from django.db import models\n\n from snitch.models import AbstractNotification\n\n\n class Notification(AbstractNotification):\n \"\"\"Custom notification.\"\"\"\n\n extra_field = models.BooleanField(default=False)\n\n\nAnd after that, specify it in the settings:\n\n.. code-block:: python\n\n SNITCH_NOTIFICATION_MODEL = \"app.Notification\"\n", "description_content_type": "text/x-rst", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/marcosgabarda/django-snitch", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "django-snitch", "package_url": "https://pypi.org/project/django-snitch/", "platform": "", "project_url": "https://pypi.org/project/django-snitch/", "project_urls": { "Homepage": "https://github.com/marcosgabarda/django-snitch" }, "release_url": "https://pypi.org/project/django-snitch/1.3.0/", "requires_dist": [ "django", "django-model-utils", "django-push-notifications", "bleach", "celery", "sphinx; extra == \"doc\"", "pytest; extra == \"test\"", "pytest-django; extra == \"test\"", "pytest-cov; extra == \"test\"", "factory_boy; extra == \"test\"" ], "requires_python": ">=3.6", "summary": "Django app made to integrate generic events that create notifications that", "version": "1.3.0" }, "last_serial": 5995459, "releases": { "1.0": [ { "comment_text": "", "digests": { "md5": "a5b150f0daf0805e1465a604fc498b86", "sha256": "e4cecf5ffca6505d7de4a9ff72723f0c4f7dac66f6385063e54f1e4553f5feed" }, "downloads": -1, "filename": "django_snitch-1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "a5b150f0daf0805e1465a604fc498b86", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 41529, "upload_time": "2019-08-14T15:39:04", "url": "https://files.pythonhosted.org/packages/2a/14/c032b4b6811bf6f9fc01a75be92b35e190e68b81056bb2bd6ef03e6fef77/django_snitch-1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b9c2b1e29e7ac8246e83cb2342903e10", "sha256": "9e578c81fa6884fb56ca839d770656f8dfca86a79579e2363be8fcf735083f1f" }, "downloads": -1, "filename": "django-snitch-1.0.tar.gz", "has_sig": false, "md5_digest": "b9c2b1e29e7ac8246e83cb2342903e10", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 27628, "upload_time": "2019-08-14T15:39:07", "url": "https://files.pythonhosted.org/packages/95/51/089adb9981f0e8708620de102bb921755d7ccaecaf96fb46a3426fd6d85a/django-snitch-1.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "c6349bb5c10007e3bba8cded2e29bc07", "sha256": "3b72aa9d8113a1e73111ebf2680e271548c1ca7efb489d5804b22811b8f794b1" }, "downloads": -1, "filename": "django_snitch-1.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "c6349bb5c10007e3bba8cded2e29bc07", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 41591, "upload_time": "2019-08-23T16:11:47", "url": "https://files.pythonhosted.org/packages/74/f0/4f7e5a3c2af7c0686da69be2f2f84b2e206417d340b742b1d37dc2e9209e/django_snitch-1.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "77056af3e6de26d6c425ae91e0fba4f3", "sha256": "6e4ad907a8b4a4684d97b07bad895ffdf69f81d286fe240bd8728e44021d6128" }, "downloads": -1, "filename": "django-snitch-1.0.1.tar.gz", "has_sig": false, "md5_digest": "77056af3e6de26d6c425ae91e0fba4f3", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 27682, "upload_time": "2019-08-23T16:11:50", "url": "https://files.pythonhosted.org/packages/64/25/35edb4d30de463fdce67bdbe462e8f6750f6519c5ca752abe9ea40eefb5e/django-snitch-1.0.1.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "047c51bc7a2a8370289452577da1d5f0", "sha256": "d5e13419a6c0d0917363cd30379404adb715312d87a19760ff19b4c4bcbb269d" }, "downloads": -1, "filename": "django_snitch-1.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "047c51bc7a2a8370289452577da1d5f0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 41679, "upload_time": "2019-08-26T17:02:08", "url": "https://files.pythonhosted.org/packages/fc/26/09650dfb4cab78e14a3feacccda2116fd1bad9656549d694eb91b11c67bd/django_snitch-1.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "50d2cdd43282796c945372fc0d349343", "sha256": "905183cd60a0dd204dc96f308c0dd036fdc7405031914d63d6e2b03ee5d63324" }, "downloads": -1, "filename": "django-snitch-1.0.2.tar.gz", "has_sig": false, "md5_digest": "50d2cdd43282796c945372fc0d349343", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 27721, "upload_time": "2019-08-26T17:02:10", "url": "https://files.pythonhosted.org/packages/d6/d4/e02256df908fa2ac51d0a8d6108ae55c3418672ae53936f54d0cda3cfdfa/django-snitch-1.0.2.tar.gz" } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "37824d3d2e46c50547752551b36e6b2e", "sha256": "a4f8657d9678c72bcb1e593d5b295e2a02973dd14b77a41a4dfa992cb8a2a8f3" }, "downloads": -1, "filename": "django_snitch-1.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "37824d3d2e46c50547752551b36e6b2e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 41747, "upload_time": "2019-08-27T11:17:10", "url": "https://files.pythonhosted.org/packages/be/2e/0c1039771f3fbfe474d9bc20a02646e766348d59fe120025010996efd94f/django_snitch-1.0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "dbe0884ed45de978639c47a2d6e713af", "sha256": "57dfc107d0473727530c3af89410a054435083e0b5e97a5acfd86292b3bc4e36" }, "downloads": -1, "filename": "django-snitch-1.0.3.tar.gz", "has_sig": false, "md5_digest": "dbe0884ed45de978639c47a2d6e713af", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 27747, "upload_time": "2019-08-27T11:17:12", "url": "https://files.pythonhosted.org/packages/0b/7a/f9469d60c6d4c767c557766b8ec70852b20bde48d4d429a188d5f5ebcf39/django-snitch-1.0.3.tar.gz" } ], "1.0.4": [ { "comment_text": "", "digests": { "md5": "65dd3b9f68e59d5b912f9a078910f183", "sha256": "4eb3acc99b79ed6be8b15998b3b9667c065cc28c4ec9c142e604b57151d7c362" }, "downloads": -1, "filename": "django_snitch-1.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "65dd3b9f68e59d5b912f9a078910f183", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 41679, "upload_time": "2019-08-27T12:05:10", "url": "https://files.pythonhosted.org/packages/31/75/946c5922d887e5cdeda3c604ba62f16e158a035d024f7f93bca71d822748/django_snitch-1.0.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4fa09bba567e26f586f452bd6d732e76", "sha256": "e794ecbc4bc90db7e3af1f3c6fdbe50f28d557e01b3b1ba930a22aba3f83e0c5" }, "downloads": -1, "filename": "django-snitch-1.0.4.tar.gz", "has_sig": false, "md5_digest": "4fa09bba567e26f586f452bd6d732e76", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 27764, "upload_time": "2019-08-27T12:05:12", "url": "https://files.pythonhosted.org/packages/77/98/3ed1546b0ca4695c8c73570cacbae9685f51b3321460393f9861c23cb369/django-snitch-1.0.4.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "3d73b7dc68cecf2600baa38a000e20c6", "sha256": "d47fdffbfdc716b575aa2f96d41573e560fdfcf7f215cf1e944fcd4e76530526" }, "downloads": -1, "filename": "django_snitch-1.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "3d73b7dc68cecf2600baa38a000e20c6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 42531, "upload_time": "2019-09-12T12:31:08", "url": "https://files.pythonhosted.org/packages/24/ce/5ae138716b36d0197d8d78db56ee62349cac55a9ec0b40e38dc4637ebc53/django_snitch-1.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cad4d14b8e02437b551896c3db697481", "sha256": "da92d99d5bd2da906e3da7498fe8808327090f659ed29acc7947b7ff4989a771" }, "downloads": -1, "filename": "django-snitch-1.1.0.tar.gz", "has_sig": false, "md5_digest": "cad4d14b8e02437b551896c3db697481", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 27904, "upload_time": "2019-09-12T12:31:12", "url": "https://files.pythonhosted.org/packages/39/ef/24f0ffc9c9932047df45e0e7987ef8f0f28d1eff2b736a2f1f7b6ce30d6a/django-snitch-1.1.0.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "230dd8e59818f8c0ee3ccfe2471c9436", "sha256": "7f9540545d95e32f7a059ab2b8f70cb8971c20d712b5d8195d4110e9d701c280" }, "downloads": -1, "filename": "django_snitch-1.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "230dd8e59818f8c0ee3ccfe2471c9436", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 42650, "upload_time": "2019-09-12T12:36:44", "url": "https://files.pythonhosted.org/packages/73/fa/b427a21f730cbd5e131182a6f70c95ce5c6f8ca2b7d28c65dbc617a64a7d/django_snitch-1.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5797b27a945d72eaa57eef091d17a13e", "sha256": "332fd8b239fe99f8d40d1686bff20d41a5719785431d1c52a7e0a1c5542e52a5" }, "downloads": -1, "filename": "django-snitch-1.1.1.tar.gz", "has_sig": false, "md5_digest": "5797b27a945d72eaa57eef091d17a13e", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 27966, "upload_time": "2019-09-12T12:36:47", "url": "https://files.pythonhosted.org/packages/ce/28/f11894121bb2ab5ef7f4135ba7650080db5fd69b4d1cbefaeee37fd7c0cd/django-snitch-1.1.1.tar.gz" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "4da055550b378c68474f9767e2c2cbaa", "sha256": "16da187e26a151dc44dee9bb6495ee9a34c26c84aba9073197a80401026274bf" }, "downloads": -1, "filename": "django_snitch-1.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "4da055550b378c68474f9767e2c2cbaa", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 43670, "upload_time": "2019-09-13T16:13:23", "url": "https://files.pythonhosted.org/packages/ec/2d/8ffa36632723210c325df74edbb425462723a27066536578ba83c8446718/django_snitch-1.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "72b08dc6ed4a6647ca5488f2327ba733", "sha256": "e95cdfe987d23f4a41cfad616fcc33514d8aae7cff931eac07ca91ed79debb78" }, "downloads": -1, "filename": "django-snitch-1.2.0.tar.gz", "has_sig": false, "md5_digest": "72b08dc6ed4a6647ca5488f2327ba733", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 28167, "upload_time": "2019-09-13T16:13:26", "url": "https://files.pythonhosted.org/packages/36/9e/8ff5cbfe0d9214ef2925c480e0caccf74e306c6a98781e58b6ddd0664d33/django-snitch-1.2.0.tar.gz" } ], "1.2.1": [ { "comment_text": "", "digests": { "md5": "ee21d4b2dd6fd391f6cfde6c26efaeb3", "sha256": "4ce4a86d8c083143776ecd83d0fe39f5f7b5a40c8c955b59ae7e17e79c314039" }, "downloads": -1, "filename": "django_snitch-1.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "ee21d4b2dd6fd391f6cfde6c26efaeb3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 43669, "upload_time": "2019-09-17T10:07:55", "url": "https://files.pythonhosted.org/packages/0e/ad/1c5022c37131889f70d10e41cababd6a0f461ef75c80da2468184cd0f528/django_snitch-1.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2e34044a3be75057dedc674ad50e17c3", "sha256": "2d1fb56bb31338b07ec16c47de27d7dec267fec1ffa6bcd366fdc978fab2e673" }, "downloads": -1, "filename": "django-snitch-1.2.1.tar.gz", "has_sig": false, "md5_digest": "2e34044a3be75057dedc674ad50e17c3", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 28191, "upload_time": "2019-09-17T10:07:57", "url": "https://files.pythonhosted.org/packages/78/9a/46eabdb6583e8f743b001f3b05b24a0cf577a95b4e9e6156fc58153644aa/django-snitch-1.2.1.tar.gz" } ], "1.3.0": [ { "comment_text": "", "digests": { "md5": "bc7be08e6ef1db714ea4e6da15fce63d", "sha256": "5c3aba03a8276fe4845205ce679243bb883a3fb5a0d6f2faaf3f063f8efc2216" }, "downloads": -1, "filename": "django_snitch-1.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "bc7be08e6ef1db714ea4e6da15fce63d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 45680, "upload_time": "2019-10-18T12:42:42", "url": "https://files.pythonhosted.org/packages/fb/49/8c2608525686caa793fa0771684ea0891879f289b0f0c10a47faf11ea125/django_snitch-1.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d84487cc4a9b15b0173b57e15d9c568a", "sha256": "621d360499e5b5dd5cc7e06fd8139557b1c54efaf31fec2b4063e1aefa791dbd" }, "downloads": -1, "filename": "django-snitch-1.3.0.tar.gz", "has_sig": false, "md5_digest": "d84487cc4a9b15b0173b57e15d9c568a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 30973, "upload_time": "2019-10-18T12:42:45", "url": "https://files.pythonhosted.org/packages/d8/2f/ea106295d422385fff641e2dea0792ec6c6df38da68af8cdef217854e802/django-snitch-1.3.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "bc7be08e6ef1db714ea4e6da15fce63d", "sha256": "5c3aba03a8276fe4845205ce679243bb883a3fb5a0d6f2faaf3f063f8efc2216" }, "downloads": -1, "filename": "django_snitch-1.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "bc7be08e6ef1db714ea4e6da15fce63d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 45680, "upload_time": "2019-10-18T12:42:42", "url": "https://files.pythonhosted.org/packages/fb/49/8c2608525686caa793fa0771684ea0891879f289b0f0c10a47faf11ea125/django_snitch-1.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d84487cc4a9b15b0173b57e15d9c568a", "sha256": "621d360499e5b5dd5cc7e06fd8139557b1c54efaf31fec2b4063e1aefa791dbd" }, "downloads": -1, "filename": "django-snitch-1.3.0.tar.gz", "has_sig": false, "md5_digest": "d84487cc4a9b15b0173b57e15d9c568a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 30973, "upload_time": "2019-10-18T12:42:45", "url": "https://files.pythonhosted.org/packages/d8/2f/ea106295d422385fff641e2dea0792ec6c6df38da68af8cdef217854e802/django-snitch-1.3.0.tar.gz" } ] }