{ "info": { "author": "Bradley Ayers", "author_email": "bradley.ayers@gmail.com", "bugtrack_url": null, "classifiers": [ "Framework :: Django", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.2", "Programming Language :: Python :: 3.3", "Topic :: Database" ], "description": "=================\ndjango-db-signals\n=================\n\nThis app adds a set of signals to some of Django's database operations:\n\n- ``django.db.signals.pre_commit``\n- ``django.db.signals.post_commit``\n- ``django.db.signals.pre_rollback``\n- ``django.db.signals.post_rollback``\n- ``django.db.signals.pre_transaction_management``\n- ``django.db.signals.post_transaction_management``\n\n\nRequirements\n============\n\n- Python 2.6/2.7/3.2/3.3 (3.x requires Django >=1.5)\n- Django 1.2/1.3/1.4/1.5\n\n\nInstallation\n============\n\n1. Install from PyPI: ``pip install django-db-signals``.\n2. Add ``'django_db_signals'`` to ``INSTALLED_APPS``.\n3. Enable the signals by adding to your ``models.py``:\n\n .. code-block:: python\n\n import django_db_signals\n django_db_signals.enable()\n\n\nExample\n=======\n\nLet's assume you've installed django-db-signals, and now you'd like to log a\nmessage each time the database is rolled back:\n\n.. code-block:: python\n\n from django.db import signals\n from django.dispatch import receiver\n import logging\n\n logger = logging.getLogger(__name__)\n\n @reciever(signals.post_rollback)\n def log_rollbacks(sender, **kwargs):\n # sender is a DatabaseWrapper object\n logger.info(\"A rollback occurred on database %s\" %\n sender.alias)\n\n\nDesign\n======\n\nIn the same way that Django settings are available via ``django.conf.settings``\nattributes, signals are available via ``django.db.signals`` attributes. As\nsuch, attempting to import individual signals will fail:\n\n.. code-block:: python\n\n >>> import django_db_signals\n >>> django_db_signals.enable()\n\n >>> from django.db import signals # GOOD\n >>> signals.pre_commit\n \n\n >>> from django.db.signals import pre_commit # BAD\n Traceback (most recent call last):\n File \"\", line 1, in \n ImportError: No module named signals\n\n\n``pre_\u2026`` vs ``post_\u2026`` signals\n-------------------------------\n\n``pre_\u2026`` signals are sent *before* an operation occurs. The signals are sent\nvia ``.send(\u2026)``. Exceptions raised in receivers are propagated to the\napplication. This can be exploited to cancel the operation (e.g. to block a\ncommit).\n\n``post_\u2026`` signals are sent *after* an operation, and as such can't offer the\nsame *cancel the pending operation* behaviour. The signal is sent via\n``.send_robust(\u2026)`` to ensure all receivers are called. Any exceptions raised\nare logged, but are not propagated to the application.\n\n\nLogging\n-------\n\nA logger named ``django.db.signals`` is used to log all exceptions raised in\n``post_\u2026`` receivers.\n\n\nSignal senders\n--------------\n\nFor all database signals, the sender of the signal is Django's database\nconnection wrapper.\n\n\nTroubleshooting\n===============\n\n \"I can import ``django.db.signals``, but when I try to access a signal I get\n an ``AttributeError`` exception.\"\n\nYou need to enable the signals via ``django_db_signals.enable()``\n", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/bradleyayers/django-db-signals", "keywords": null, "license": "Simplified BSD", "maintainer": null, "maintainer_email": null, "name": "django-db-signals", "package_url": "https://pypi.org/project/django-db-signals/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/django-db-signals/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/bradleyayers/django-db-signals" }, "release_url": "https://pypi.org/project/django-db-signals/0.1.1/", "requires_dist": null, "requires_python": null, "summary": "Django database signals (pre/post commit/rollback).", "version": "0.1.1" }, "last_serial": 789433, "releases": { "0.1.0": [], "0.1.1": [ { "comment_text": "", "digests": { "md5": "7abdb1bf809cbd549426d01edf255a34", "sha256": "b2e4b0b6a471ed6cfb3f78650b518af92b2e62ba0c4714c7062debd1aa40a333" }, "downloads": -1, "filename": "django-db-signals-0.1.1.tar.gz", "has_sig": false, "md5_digest": "7abdb1bf809cbd549426d01edf255a34", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3837, "upload_time": "2012-12-22T22:52:48", "url": "https://files.pythonhosted.org/packages/ba/72/708ed89361d08679dd04d5783af51ee1e196e4b026493f70c59e4f77b963/django-db-signals-0.1.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "7abdb1bf809cbd549426d01edf255a34", "sha256": "b2e4b0b6a471ed6cfb3f78650b518af92b2e62ba0c4714c7062debd1aa40a333" }, "downloads": -1, "filename": "django-db-signals-0.1.1.tar.gz", "has_sig": false, "md5_digest": "7abdb1bf809cbd549426d01edf255a34", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3837, "upload_time": "2012-12-22T22:52:48", "url": "https://files.pythonhosted.org/packages/ba/72/708ed89361d08679dd04d5783af51ee1e196e4b026493f70c59e4f77b963/django-db-signals-0.1.1.tar.gz" } ] }