django-bulk-hooks 0.2.37__tar.gz → 0.2.39__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 (26) hide show
  1. {django_bulk_hooks-0.2.37 → django_bulk_hooks-0.2.39}/PKG-INFO +1 -1
  2. {django_bulk_hooks-0.2.37 → django_bulk_hooks-0.2.39}/django_bulk_hooks/operations/bulk_executor.py +27 -4
  3. {django_bulk_hooks-0.2.37 → django_bulk_hooks-0.2.39}/pyproject.toml +1 -1
  4. {django_bulk_hooks-0.2.37 → django_bulk_hooks-0.2.39}/LICENSE +0 -0
  5. {django_bulk_hooks-0.2.37 → django_bulk_hooks-0.2.39}/README.md +0 -0
  6. {django_bulk_hooks-0.2.37 → django_bulk_hooks-0.2.39}/django_bulk_hooks/__init__.py +0 -0
  7. {django_bulk_hooks-0.2.37 → django_bulk_hooks-0.2.39}/django_bulk_hooks/changeset.py +0 -0
  8. {django_bulk_hooks-0.2.37 → django_bulk_hooks-0.2.39}/django_bulk_hooks/conditions.py +0 -0
  9. {django_bulk_hooks-0.2.37 → django_bulk_hooks-0.2.39}/django_bulk_hooks/constants.py +0 -0
  10. {django_bulk_hooks-0.2.37 → django_bulk_hooks-0.2.39}/django_bulk_hooks/context.py +0 -0
  11. {django_bulk_hooks-0.2.37 → django_bulk_hooks-0.2.39}/django_bulk_hooks/decorators.py +0 -0
  12. {django_bulk_hooks-0.2.37 → django_bulk_hooks-0.2.39}/django_bulk_hooks/dispatcher.py +0 -0
  13. {django_bulk_hooks-0.2.37 → django_bulk_hooks-0.2.39}/django_bulk_hooks/enums.py +0 -0
  14. {django_bulk_hooks-0.2.37 → django_bulk_hooks-0.2.39}/django_bulk_hooks/factory.py +0 -0
  15. {django_bulk_hooks-0.2.37 → django_bulk_hooks-0.2.39}/django_bulk_hooks/handler.py +0 -0
  16. {django_bulk_hooks-0.2.37 → django_bulk_hooks-0.2.39}/django_bulk_hooks/helpers.py +0 -0
  17. {django_bulk_hooks-0.2.37 → django_bulk_hooks-0.2.39}/django_bulk_hooks/manager.py +0 -0
  18. {django_bulk_hooks-0.2.37 → django_bulk_hooks-0.2.39}/django_bulk_hooks/models.py +0 -0
  19. {django_bulk_hooks-0.2.37 → django_bulk_hooks-0.2.39}/django_bulk_hooks/operations/__init__.py +0 -0
  20. {django_bulk_hooks-0.2.37 → django_bulk_hooks-0.2.39}/django_bulk_hooks/operations/analyzer.py +0 -0
  21. {django_bulk_hooks-0.2.37 → django_bulk_hooks-0.2.39}/django_bulk_hooks/operations/coordinator.py +0 -0
  22. {django_bulk_hooks-0.2.37 → django_bulk_hooks-0.2.39}/django_bulk_hooks/operations/mti_handler.py +0 -0
  23. {django_bulk_hooks-0.2.37 → django_bulk_hooks-0.2.39}/django_bulk_hooks/operations/mti_plans.py +0 -0
  24. {django_bulk_hooks-0.2.37 → django_bulk_hooks-0.2.39}/django_bulk_hooks/operations/record_classifier.py +0 -0
  25. {django_bulk_hooks-0.2.37 → django_bulk_hooks-0.2.39}/django_bulk_hooks/queryset.py +0 -0
  26. {django_bulk_hooks-0.2.37 → django_bulk_hooks-0.2.39}/django_bulk_hooks/registry.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: django-bulk-hooks
3
- Version: 0.2.37
3
+ Version: 0.2.39
4
4
  Summary: Hook-style hooks for Django bulk operations like bulk_create and bulk_update.
5
5
  License: MIT
6
6
  Keywords: django,bulk,hooks
@@ -487,16 +487,16 @@ class BulkExecutor:
487
487
 
488
488
  # Handle NULL values specially for ForeignKey fields
489
489
  if is_fk and value is None:
490
- # For ForeignKey fields with None values, use None directly
491
- # Django handles this as proper NULL with correct type
490
+ # For ForeignKey fields with None values, use Value(None) with proper output_field
491
+ # This ensures the SQL generates proper NULL with correct type casting
492
492
  logger.info(
493
493
  f"DEBUG NULL FIX APPLIED - Field: {field_name}, "
494
- f"PK: {pk}, Using None directly instead of Value(None, ...)"
494
+ f"PK: {pk}, Using Value(None) with output_field: {type(case_output_field).__name__}"
495
495
  )
496
496
  when_statements.append(
497
497
  When(
498
498
  **{field_group.filter_field: pk},
499
- then=None,
499
+ then=Value(None, output_field=case_output_field),
500
500
  ),
501
501
  )
502
502
  else:
@@ -519,6 +519,29 @@ class BulkExecutor:
519
519
  f"CaseOutputField: {type(case_output_field).__name__}, "
520
520
  f"NumWhenStatements: {len(when_statements)}"
521
521
  )
522
+
523
+ # DEBUG: Log the actual When statements to see what's being generated
524
+ for i, when_stmt in enumerate(when_statements):
525
+ logger.info(
526
+ f"DEBUG When Statement {i} - Field: {field_name}, "
527
+ f"WhenCondition: {when_stmt.condition}, "
528
+ f"WhenThen: {when_stmt.result}, "
529
+ f"WhenThenType: {type(when_stmt.result).__name__}"
530
+ )
531
+
532
+ # DEBUG: Check if the When result has output_field
533
+ if hasattr(when_stmt.result, 'output_field'):
534
+ logger.info(
535
+ f"DEBUG When Result OutputField - Field: {field_name}, "
536
+ f"WhenIndex: {i}, "
537
+ f"ResultOutputField: {type(when_stmt.result.output_field).__name__}"
538
+ )
539
+ else:
540
+ logger.info(
541
+ f"DEBUG When Result No OutputField - Field: {field_name}, "
542
+ f"WhenIndex: {i}, "
543
+ f"ResultType: {type(when_stmt.result).__name__}"
544
+ )
522
545
 
523
546
  # Execute bulk update
524
547
  if case_statements:
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "django-bulk-hooks"
3
- version = "0.2.37"
3
+ version = "0.2.39"
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"