Metadata-Version: 2.4
Name: django-advanced-bulk-signals
Version: 0.1.0
Summary: Custom Django signals for update, bulk update/create operations with field tracking
Home-page: https://github.com/jaeger123/django-bulk-signals
Author: Akarsh Sharma
Author-email: akarsh1998@gmail.com
Classifier: Framework :: Django
Classifier: Programming Language :: Python :: 3
Classifier: Operating System :: OS Independent
Classifier: License :: OSI Approved :: MIT License
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: Django>=3.2
Dynamic: author
Dynamic: author-email
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: license-file
Dynamic: requires-dist
Dynamic: requires-python
Dynamic: summary

# django-bulk-signals

**Custom signal support for Django bulk operations — with granular field-level diffing.**

This library extends Django's signal framework to support `bulk_create`, `bulk_update`, and queryset `update()` operations. It also helps detect exactly **which fields changed** in each object.

---

## ✨ Features

- `pre_bulk_create`, `post_bulk_create` signals
- `pre_bulk_update`, `post_bulk_update` signals
- `pre_update` for regular `.update()` calls
- Field-level change tracking during bulk operations
- Decorators for easy multi-signal binding
- Drop-in replacement for your model `Manager` or `QuerySet`

---

## 🚀 Installation

```bash
pip install django-bulk-signals
```
🧠 Usage

1. Use the custom manager:
```python
from django_bulk_signals.managers import CustomManager
from django.db import models

class Customer(models.Model):
    ...
    objects = CustomManager()
```
2. Connect to signals:
```python
from django.dispatch import receiver
from django_bulk_signals.signals import pre_bulk_update

@receiver(pre_bulk_update, sender=Customer)
def customer_bulk_update_handler(sender, **kwargs):
    forward_data = kwargs.get("forward_data")
    print("Changed fields:", forward_data)
```
3. Signal Reference
| Signal             | Description            |
| ------------------ | ---------------------- |
| `pre_update`       | Before `.update()`     |
| `pre_bulk_update`  | Before `bulk_update()` |
| `post_bulk_update` | After `bulk_update()`  |
| `pre_bulk_create`  | Before `bulk_create()` |
| `post_bulk_create` | After `bulk_create()`  |

🛠️ Tools
Decorator
```python
from django_bulk_signals.decorators import apply_signals

@apply_signals(Customer, pre_bulk_update, pre_update)
def handler(sender, **kwargs):
    ...
```
