django-bulk-hooks 0.1.244__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.244 → django_bulk_hooks-0.1.246}/PKG-INFO +1 -1
  2. {django_bulk_hooks-0.1.244 → django_bulk_hooks-0.1.246}/django_bulk_hooks/queryset.py +8 -1
  3. {django_bulk_hooks-0.1.244 → django_bulk_hooks-0.1.246}/pyproject.toml +1 -1
  4. {django_bulk_hooks-0.1.244 → django_bulk_hooks-0.1.246}/LICENSE +0 -0
  5. {django_bulk_hooks-0.1.244 → django_bulk_hooks-0.1.246}/README.md +0 -0
  6. {django_bulk_hooks-0.1.244 → django_bulk_hooks-0.1.246}/django_bulk_hooks/__init__.py +0 -0
  7. {django_bulk_hooks-0.1.244 → django_bulk_hooks-0.1.246}/django_bulk_hooks/conditions.py +0 -0
  8. {django_bulk_hooks-0.1.244 → django_bulk_hooks-0.1.246}/django_bulk_hooks/constants.py +0 -0
  9. {django_bulk_hooks-0.1.244 → django_bulk_hooks-0.1.246}/django_bulk_hooks/context.py +0 -0
  10. {django_bulk_hooks-0.1.244 → django_bulk_hooks-0.1.246}/django_bulk_hooks/decorators.py +0 -0
  11. {django_bulk_hooks-0.1.244 → django_bulk_hooks-0.1.246}/django_bulk_hooks/engine.py +0 -0
  12. {django_bulk_hooks-0.1.244 → django_bulk_hooks-0.1.246}/django_bulk_hooks/enums.py +0 -0
  13. {django_bulk_hooks-0.1.244 → django_bulk_hooks-0.1.246}/django_bulk_hooks/handler.py +0 -0
  14. {django_bulk_hooks-0.1.244 → django_bulk_hooks-0.1.246}/django_bulk_hooks/manager.py +0 -0
  15. {django_bulk_hooks-0.1.244 → django_bulk_hooks-0.1.246}/django_bulk_hooks/models.py +0 -0
  16. {django_bulk_hooks-0.1.244 → django_bulk_hooks-0.1.246}/django_bulk_hooks/priority.py +0 -0
  17. {django_bulk_hooks-0.1.244 → 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.244
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,6 +172,7 @@ 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
+ # Run hooks before database update for both Subquery and non-Subquery cases
175
176
  # Run validation hooks first
176
177
  engine.run(model_cls, VALIDATE_UPDATE, instances, originals, ctx=ctx)
177
178
  # Then run BEFORE_UPDATE hooks
@@ -377,7 +378,11 @@ class HookQuerySetMixin:
377
378
  raise
378
379
 
379
380
  # If we used Subquery objects, refresh the instances to get computed values
380
- if has_subquery and instances:
381
+ # for AFTER_UPDATE hooks so HasChanged conditions work correctly
382
+ if has_subquery and instances and not current_bypass_hooks:
383
+ logger.debug(
384
+ "Refreshing instances with Subquery computed values before running hooks"
385
+ )
381
386
  # Simple refresh of model fields without fetching related objects
382
387
  # Subquery updates only affect the model's own fields, not relationships
383
388
  refreshed_instances = {
@@ -397,6 +402,8 @@ class HookQuerySetMixin:
397
402
  getattr(refreshed_instance, field.name),
398
403
  )
399
404
 
405
+ logger.debug("Running hooks after Subquery refresh")
406
+
400
407
  # Salesforce-style: Always run AFTER_UPDATE hooks unless explicitly bypassed
401
408
  if not current_bypass_hooks:
402
409
  logger.debug("update: running AFTER_UPDATE")
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "django-bulk-hooks"
3
- version = "0.1.244"
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"