Skip to main content

django-status-signal

enhanced django signal which enable you to trigger a signal only if the model instance is in a certain status

Install

pip3 install django-status-signal

Usage

In many scenarios, you may want to trigger a function only when a model's status has been changed to a certain status. But the default django's signal can only use the sender(an model instance) to search the receivers. Here comes the solution.

from django_status_signal import Signal
class Task(models.Model):
    status = models.CharField(
        choices=(
            ("start", "start"),
            ("doing", "doing"),
            ("success", "success"),
            ("fail", "fail"),
        ),
        max_length=31,
    )
# create a signal and connect it to different status
mysignal = Singal()
mysignal.connect(send_message, Task, dispatch_status="fail")
mysignal.connect(reward, Task, dispatch_status="success")
# call the signal
task = Task.objects.create('start')
mysignal.send(Task, instance=task, task.status)  # nothing will happen
task.status = 'success'
task.save()
mysignal.send(Task, instance=task, task.status)  # the send_message will be called

TODO

when this project is stable enough, I want to merge the code into django project, so all the post_save, post_delete can accept dispatch_status parameter.

LICENSE

there are many code copied from the django project, so the LICENSE should stay the same as django's LICENSE.

Metadata

Release files for django-status-signal 0.0.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for django-status-signal 0.0.2
File Size Uploaded
django-status-signal-0.0.2.tar.gz 4.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for django-status-signal 0.0.2
File Interpreter ABI Platform
django_status_signal-0.0.2-py3-none-any.whl Python 3 none any Details

Total release size: 11.4 kB

Release files / django-status-signal-0.0.2.tar.gz

Download URL django-status-signal-0.0.2.tar.gz
Size 4.7 kB
Tags Source
SHA-256 checksum
How to use checksums
7af2748c9d2b83179d62e731a295723068d3db4edd23eb05e63e2bde3caee4eb
BLAKE2b-256 checksum
How to use checksums
81cd1aa01d0cfb06fcd0c64e76f70a84880ab3546f7f0be0586385f48ab67e11
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.3.0 pkginfo/1.6.1 requests/2.24.0 setuptools/45.2.0 requests-toolbelt/0.9.1 tqdm/4.56.0 CPython/3.8.10

Release files / django_status_signal-0.0.2-py3-none-any.whl

Download URL django_status_signal-0.0.2-py3-none-any.whl
Size 6.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
363f3d5e3e6f3b6fc7685bad5ce7303147a1dc3c2ed5c59acbebeb1dfd8db65a
BLAKE2b-256 checksum
How to use checksums
3ad1a11cc0cf5f25d6de5e111ea7c43409682d793729713cd6d1885f72aab01f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.3.0 pkginfo/1.6.1 requests/2.24.0 setuptools/45.2.0 requests-toolbelt/0.9.1 tqdm/4.56.0 CPython/3.8.10

Release history Release notifications | RSS feed

This release

0.0.2 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page