django-bulk-hooks 0.1.245__tar.gz → 0.1.246__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.245 → django_bulk_hooks-0.1.246}/PKG-INFO +1 -1
  2. {django_bulk_hooks-0.1.245 → django_bulk_hooks-0.1.246}/django_bulk_hooks/queryset.py +7 -18
  3. {django_bulk_hooks-0.1.245 → django_bulk_hooks-0.1.246}/pyproject.toml +1 -1
  4. {django_bulk_hooks-0.1.245 → django_bulk_hooks-0.1.246}/LICENSE +0 -0
  5. {django_bulk_hooks-0.1.245 → django_bulk_hooks-0.1.246}/README.md +0 -0
  6. {django_bulk_hooks-0.1.245 → django_bulk_hooks-0.1.246}/django_bulk_hooks/__init__.py +0 -0
  7. {django_bulk_hooks-0.1.245 → django_bulk_hooks-0.1.246}/django_bulk_hooks/conditions.py +0 -0
  8. {django_bulk_hooks-0.1.245 → django_bulk_hooks-0.1.246}/django_bulk_hooks/constants.py +0 -0
  9. {django_bulk_hooks-0.1.245 → django_bulk_hooks-0.1.246}/django_bulk_hooks/context.py +0 -0
  10. {django_bulk_hooks-0.1.245 → django_bulk_hooks-0.1.246}/django_bulk_hooks/decorators.py +0 -0
  11. {django_bulk_hooks-0.1.245 → django_bulk_hooks-0.1.246}/django_bulk_hooks/engine.py +0 -0
  12. {django_bulk_hooks-0.1.245 → django_bulk_hooks-0.1.246}/django_bulk_hooks/enums.py +0 -0
  13. {django_bulk_hooks-0.1.245 → django_bulk_hooks-0.1.246}/django_bulk_hooks/handler.py +0 -0
  14. {django_bulk_hooks-0.1.245 → django_bulk_hooks-0.1.246}/django_bulk_hooks/manager.py +0 -0
  15. {django_bulk_hooks-0.1.245 → django_bulk_hooks-0.1.246}/django_bulk_hooks/models.py +0 -0
  16. {django_bulk_hooks-0.1.245 → django_bulk_hooks-0.1.246}/django_bulk_hooks/priority.py +0 -0
  17. {django_bulk_hooks-0.1.245 → django_bulk_hooks-0.1.246}/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.245
3
+ Version: 0.1.246
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
@@ -172,21 +172,15 @@ class HookQuerySetMixin:
172
172
  logger.debug("update: running hooks with Salesforce-style behavior")
173
173
  ctx = HookContext(model_cls, bypass_hooks=False)
174
174
 
175
- # For Subquery updates, we need to run hooks AFTER the database update and refresh
176
- # For non-Subquery updates, we can run hooks before the database update as usual
177
- if not has_subquery:
178
- # Run validation hooks first
179
- engine.run(model_cls, VALIDATE_UPDATE, instances, originals, ctx=ctx)
180
- # Then run BEFORE_UPDATE hooks
181
- engine.run(model_cls, BEFORE_UPDATE, instances, originals, ctx=ctx)
175
+ # Run hooks before database update for both Subquery and non-Subquery cases
176
+ # Run validation hooks first
177
+ engine.run(model_cls, VALIDATE_UPDATE, instances, originals, ctx=ctx)
178
+ # Then run BEFORE_UPDATE hooks
179
+ engine.run(model_cls, BEFORE_UPDATE, instances, originals, ctx=ctx)
182
180
 
183
181
  # Persist any additional field mutations made by BEFORE_UPDATE hooks.
184
182
  # Build CASE statements per modified field not already present in kwargs.
185
- modified_fields = (
186
- self._detect_modified_fields(instances, originals)
187
- if not has_subquery
188
- else set()
189
- )
183
+ modified_fields = self._detect_modified_fields(instances, originals)
190
184
  extra_fields = [f for f in modified_fields if f not in kwargs]
191
185
  if extra_fields:
192
186
  case_statements = {}
@@ -384,7 +378,7 @@ class HookQuerySetMixin:
384
378
  raise
385
379
 
386
380
  # If we used Subquery objects, refresh the instances to get computed values
387
- # and then run hooks so HasChanged conditions work correctly
381
+ # for AFTER_UPDATE hooks so HasChanged conditions work correctly
388
382
  if has_subquery and instances and not current_bypass_hooks:
389
383
  logger.debug(
390
384
  "Refreshing instances with Subquery computed values before running hooks"
@@ -408,12 +402,7 @@ class HookQuerySetMixin:
408
402
  getattr(refreshed_instance, field.name),
409
403
  )
410
404
 
411
- # Now run the hooks with the refreshed instances containing computed values
412
405
  logger.debug("Running hooks after Subquery refresh")
413
- # Run validation hooks first
414
- engine.run(model_cls, VALIDATE_UPDATE, instances, originals, ctx=ctx)
415
- # Then run BEFORE_UPDATE hooks
416
- engine.run(model_cls, BEFORE_UPDATE, instances, originals, ctx=ctx)
417
406
 
418
407
  # Salesforce-style: Always run AFTER_UPDATE hooks unless explicitly bypassed
419
408
  if not current_bypass_hooks:
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "django-bulk-hooks"
3
- version = "0.1.245"
3
+ version = "0.1.246"
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"