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.

Files changed (17) hide show
  1. {django_bulk_hooks-0.1.211 → django_bulk_hooks-0.1.213}/PKG-INFO +1 -1
  2. {django_bulk_hooks-0.1.211 → django_bulk_hooks-0.1.213}/django_bulk_hooks/queryset.py +6 -3
  3. {django_bulk_hooks-0.1.211 → django_bulk_hooks-0.1.213}/pyproject.toml +1 -1
  4. {django_bulk_hooks-0.1.211 → django_bulk_hooks-0.1.213}/LICENSE +0 -0
  5. {django_bulk_hooks-0.1.211 → django_bulk_hooks-0.1.213}/README.md +0 -0
  6. {django_bulk_hooks-0.1.211 → django_bulk_hooks-0.1.213}/django_bulk_hooks/__init__.py +0 -0
  7. {django_bulk_hooks-0.1.211 → django_bulk_hooks-0.1.213}/django_bulk_hooks/conditions.py +0 -0
  8. {django_bulk_hooks-0.1.211 → django_bulk_hooks-0.1.213}/django_bulk_hooks/constants.py +0 -0
  9. {django_bulk_hooks-0.1.211 → django_bulk_hooks-0.1.213}/django_bulk_hooks/context.py +0 -0
  10. {django_bulk_hooks-0.1.211 → django_bulk_hooks-0.1.213}/django_bulk_hooks/decorators.py +0 -0
  11. {django_bulk_hooks-0.1.211 → django_bulk_hooks-0.1.213}/django_bulk_hooks/engine.py +0 -0
  12. {django_bulk_hooks-0.1.211 → django_bulk_hooks-0.1.213}/django_bulk_hooks/enums.py +0 -0
  13. {django_bulk_hooks-0.1.211 → django_bulk_hooks-0.1.213}/django_bulk_hooks/handler.py +0 -0
  14. {django_bulk_hooks-0.1.211 → django_bulk_hooks-0.1.213}/django_bulk_hooks/manager.py +0 -0
  15. {django_bulk_hooks-0.1.211 → django_bulk_hooks-0.1.213}/django_bulk_hooks/models.py +0 -0
  16. {django_bulk_hooks-0.1.211 → django_bulk_hooks-0.1.213}/django_bulk_hooks/priority.py +0 -0
  17. {django_bulk_hooks-0.1.211 → django_bulk_hooks-0.1.213}/django_bulk_hooks/registry.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: django-bulk-hooks
3
- Version: 0.1.211
3
+ Version: 0.1.213
4
4
  Summary: Hook-style hooks for Django bulk operations like bulk_create and bulk_update.
5
5
  Home-page: https://github.com/AugendLimited/django-bulk-hooks
6
6
  License: MIT
@@ -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
- result = super().bulk_update(objs, fields, **django_kwargs)
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.211"
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"