django-bulk-hooks 0.1.211__tar.gz → 0.1.213__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of django-bulk-hooks might be problematic. Click here for more details.
- {django_bulk_hooks-0.1.211 → django_bulk_hooks-0.1.213}/PKG-INFO +1 -1
- {django_bulk_hooks-0.1.211 → django_bulk_hooks-0.1.213}/django_bulk_hooks/queryset.py +6 -3
- {django_bulk_hooks-0.1.211 → django_bulk_hooks-0.1.213}/pyproject.toml +1 -1
- {django_bulk_hooks-0.1.211 → django_bulk_hooks-0.1.213}/LICENSE +0 -0
- {django_bulk_hooks-0.1.211 → django_bulk_hooks-0.1.213}/README.md +0 -0
- {django_bulk_hooks-0.1.211 → django_bulk_hooks-0.1.213}/django_bulk_hooks/__init__.py +0 -0
- {django_bulk_hooks-0.1.211 → django_bulk_hooks-0.1.213}/django_bulk_hooks/conditions.py +0 -0
- {django_bulk_hooks-0.1.211 → django_bulk_hooks-0.1.213}/django_bulk_hooks/constants.py +0 -0
- {django_bulk_hooks-0.1.211 → django_bulk_hooks-0.1.213}/django_bulk_hooks/context.py +0 -0
- {django_bulk_hooks-0.1.211 → django_bulk_hooks-0.1.213}/django_bulk_hooks/decorators.py +0 -0
- {django_bulk_hooks-0.1.211 → django_bulk_hooks-0.1.213}/django_bulk_hooks/engine.py +0 -0
- {django_bulk_hooks-0.1.211 → django_bulk_hooks-0.1.213}/django_bulk_hooks/enums.py +0 -0
- {django_bulk_hooks-0.1.211 → django_bulk_hooks-0.1.213}/django_bulk_hooks/handler.py +0 -0
- {django_bulk_hooks-0.1.211 → django_bulk_hooks-0.1.213}/django_bulk_hooks/manager.py +0 -0
- {django_bulk_hooks-0.1.211 → django_bulk_hooks-0.1.213}/django_bulk_hooks/models.py +0 -0
- {django_bulk_hooks-0.1.211 → django_bulk_hooks-0.1.213}/django_bulk_hooks/priority.py +0 -0
- {django_bulk_hooks-0.1.211 → django_bulk_hooks-0.1.213}/django_bulk_hooks/registry.py +0 -0
|
@@ -245,8 +245,6 @@ class HookQuerySetMixin:
|
|
|
245
245
|
|
|
246
246
|
# Then run business logic hooks
|
|
247
247
|
engine.run(model_cls, BEFORE_UPDATE, objs, originals, ctx=ctx)
|
|
248
|
-
else:
|
|
249
|
-
print(f"DEBUG: bypass_hooks=True, skipping hooks for {len(objs)} objects")
|
|
250
248
|
|
|
251
249
|
# Detect modified fields during hooks
|
|
252
250
|
modified_fields = self._detect_modified_fields(objs, originals)
|
|
@@ -254,6 +252,8 @@ class HookQuerySetMixin:
|
|
|
254
252
|
fields_set = set(fields)
|
|
255
253
|
fields_set.update(modified_fields)
|
|
256
254
|
fields = list(fields_set)
|
|
255
|
+
else:
|
|
256
|
+
print(f"DEBUG: bypass_hooks=True, skipping hooks for {len(objs)} objects")
|
|
257
257
|
|
|
258
258
|
# Handle auto_now fields like Django's update_or_create does
|
|
259
259
|
fields_set = set(fields)
|
|
@@ -278,7 +278,10 @@ class HookQuerySetMixin:
|
|
|
278
278
|
for k, v in kwargs.items()
|
|
279
279
|
if k not in ["bypass_hooks", "bypass_validation"]
|
|
280
280
|
}
|
|
281
|
-
|
|
281
|
+
# Call Django's bulk_update with hook suspension to prevent double execution
|
|
282
|
+
# Django's bulk_update internally calls .update() which would trigger our hooks again
|
|
283
|
+
with Hook.suspend():
|
|
284
|
+
result = super().bulk_update(objs, fields, **django_kwargs)
|
|
282
285
|
|
|
283
286
|
if not bypass_hooks:
|
|
284
287
|
print(
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "django-bulk-hooks"
|
|
3
|
-
version = "0.1.
|
|
3
|
+
version = "0.1.213"
|
|
4
4
|
description = "Hook-style hooks for Django bulk operations like bulk_create and bulk_update."
|
|
5
5
|
authors = ["Konrad Beck <konrad.beck@merchantcapital.co.za>"]
|
|
6
6
|
readme = "README.md"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|