A package for managing Django model signals.
This project has been archived.
The maintainers of this project have marked this project as archived. No new releases are expected.
Project description
Django Signal Manager Framework
This package provides a base class, SignalManager, for simplifying the managing of Django model signals. It streamlines the process of responding to pre_save, post_save, pre_delete, and post_delete signals by categorizing them into more specific methods.
Installation
You can install this framework using pip:
pip install django-signal-manager
Usage
Create a subclass of SignalManager:
import logging
from django.db.models import Model
from signal_manager import SignalManager
from your_app.models import MyModel
logger = logging.getLogger(__name__)
class MyModelSignalManager(SignalManager):
def on_pre_create(self, instance: Model, **kwargs: Any) -> None:
logger.info(f"Pre-create: {instance}")
# Add your logic here
def on_post_create(self, instance: Model, **kwargs: Any) -> None:
logger.info(f"Post-create: {instance}")
# Add your logic here
def on_pre_update(self, instance: Model, **kwargs: Any) -> None:
logger.info(f"Pre-update: {instance}")
# Add your logic here
def on_post_update(self, instance: Model, **kwargs: Any) -> None:
logger.info(f"Post-update: {instance}")
# Add your logic here
def on_pre_delete(self, instance: Model, **kwargs: Any) -> None:
logger.info(f"Pre-delete: {instance}")
# Add your logic here
def on_post_delete(self, instance: Model, **kwargs: Any) -> None:
logger.info(f"Post-delete: {instance}")
# Add your logic here
Connect the signal manager to your model:
from django.db.models.signals import pre_save, post_save, pre_delete, post_delete
from django.dispatch import receiver
from your_app.models import MyModel
from .signal_managers import MyModelSignalManager
manager = MyModelSignalManager()
@receiver(pre_save, sender=MyModel)
@receiver(post_save, sender=MyModel)
@receiver(pre_delete, sender=MyModel)
@receiver(post_delete, sender=MyModel)
def my_model_signals(sender, instance, **kwargs):
manager.run(sender, instance, **kwargs)
Class Overview
SignalManager
run(sender: type, instance: Model, **kwargs: Any) -> None:- Determines the signal type and dispatches to the appropriate manager method.
on_pre_create(instance: Model, **kwargs: Any) -> None:- manager for
pre_savewhen a new instance is being created.
- manager for
on_post_create(instance: Model, **kwargs: Any) -> None:- manager for
post_savewhen a new instance is created.
- manager for
on_pre_update(instance: Model, **kwargs: Any) -> None:- manager for
pre_savewhen an existing instance is being updated.
- manager for
on_post_update(instance: Model, **kwargs: Any) -> None:- manager for
post_savewhen an existing instance is updated.
- manager for
on_pre_delete(instance: Model, **kwargs: Any) -> None:- manager for
pre_delete.
- manager for
on_post_delete(instance: Model, **kwargs: Any) -> None:- manager for
post_delete.
- manager for
Benefits
- Organization: Separates signal managing logic into distinct methods, improving code readability and maintainability.
- Clarity: Makes it clear which signal is being managed (create vs. update).
- Reusability: The base class can be extended for different models, reducing code duplication.
- Logging: Includes basic logging for unknown or missing signals.
Contributing
Contributions are welcome! Please feel free to submit pull requests or open issues.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file django_signal_manager-0.1.6.tar.gz.
File metadata
- Download URL: django_signal_manager-0.1.6.tar.gz
- Upload date:
- Size: 4.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4b5ccb642d84bbb0919c7e3127de8e44b644f6e0abdb5fdb55f3a574f24e85fd
|
|
| MD5 |
750df384f56b26d28ad08c2355df926a
|
|
| BLAKE2b-256 |
edc0951ccc4e7436f27c6fe945ecab29b32bb04af8f3edfafaced03943ff1a2c
|
File details
Details for the file django_signal_manager-0.1.6-py3-none-any.whl.
File metadata
- Download URL: django_signal_manager-0.1.6-py3-none-any.whl
- Upload date:
- Size: 4.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
aa7d25da372f602264bea4f68327ec136990e51cbdea86ae67952181e0eff5da
|
|
| MD5 |
b58f4d392afaa75c303024c96d4f807f
|
|
| BLAKE2b-256 |
c2ada6276b418544fd0848ed82807623722def72b245eed420e64504fdd5918d
|