django-bulk-hooks 0.2.32__tar.gz → 0.2.34__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.32 → django_bulk_hooks-0.2.34}/PKG-INFO +1 -1
  2. {django_bulk_hooks-0.2.32 → django_bulk_hooks-0.2.34}/django_bulk_hooks/operations/bulk_executor.py +36 -2
  3. {django_bulk_hooks-0.2.32 → django_bulk_hooks-0.2.34}/pyproject.toml +1 -1
  4. {django_bulk_hooks-0.2.32 → django_bulk_hooks-0.2.34}/LICENSE +0 -0
  5. {django_bulk_hooks-0.2.32 → django_bulk_hooks-0.2.34}/README.md +0 -0
  6. {django_bulk_hooks-0.2.32 → django_bulk_hooks-0.2.34}/django_bulk_hooks/__init__.py +0 -0
  7. {django_bulk_hooks-0.2.32 → django_bulk_hooks-0.2.34}/django_bulk_hooks/changeset.py +0 -0
  8. {django_bulk_hooks-0.2.32 → django_bulk_hooks-0.2.34}/django_bulk_hooks/conditions.py +0 -0
  9. {django_bulk_hooks-0.2.32 → django_bulk_hooks-0.2.34}/django_bulk_hooks/constants.py +0 -0
  10. {django_bulk_hooks-0.2.32 → django_bulk_hooks-0.2.34}/django_bulk_hooks/context.py +0 -0
  11. {django_bulk_hooks-0.2.32 → django_bulk_hooks-0.2.34}/django_bulk_hooks/decorators.py +0 -0
  12. {django_bulk_hooks-0.2.32 → django_bulk_hooks-0.2.34}/django_bulk_hooks/dispatcher.py +0 -0
  13. {django_bulk_hooks-0.2.32 → django_bulk_hooks-0.2.34}/django_bulk_hooks/enums.py +0 -0
  14. {django_bulk_hooks-0.2.32 → django_bulk_hooks-0.2.34}/django_bulk_hooks/factory.py +0 -0
  15. {django_bulk_hooks-0.2.32 → django_bulk_hooks-0.2.34}/django_bulk_hooks/handler.py +0 -0
  16. {django_bulk_hooks-0.2.32 → django_bulk_hooks-0.2.34}/django_bulk_hooks/helpers.py +0 -0
  17. {django_bulk_hooks-0.2.32 → django_bulk_hooks-0.2.34}/django_bulk_hooks/manager.py +0 -0
  18. {django_bulk_hooks-0.2.32 → django_bulk_hooks-0.2.34}/django_bulk_hooks/models.py +0 -0
  19. {django_bulk_hooks-0.2.32 → django_bulk_hooks-0.2.34}/django_bulk_hooks/operations/__init__.py +0 -0
  20. {django_bulk_hooks-0.2.32 → django_bulk_hooks-0.2.34}/django_bulk_hooks/operations/analyzer.py +0 -0
  21. {django_bulk_hooks-0.2.32 → django_bulk_hooks-0.2.34}/django_bulk_hooks/operations/coordinator.py +0 -0
  22. {django_bulk_hooks-0.2.32 → django_bulk_hooks-0.2.34}/django_bulk_hooks/operations/mti_handler.py +0 -0
  23. {django_bulk_hooks-0.2.32 → django_bulk_hooks-0.2.34}/django_bulk_hooks/operations/mti_plans.py +0 -0
  24. {django_bulk_hooks-0.2.32 → django_bulk_hooks-0.2.34}/django_bulk_hooks/operations/record_classifier.py +0 -0
  25. {django_bulk_hooks-0.2.32 → django_bulk_hooks-0.2.34}/django_bulk_hooks/queryset.py +0 -0
  26. {django_bulk_hooks-0.2.32 → django_bulk_hooks-0.2.34}/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.32
3
+ Version: 0.2.34
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
@@ -446,7 +446,26 @@ class BulkExecutor:
446
446
 
447
447
  # Determine the correct output field for type casting
448
448
  # For ForeignKey fields, use the target field to ensure correct SQL types
449
- case_output_field = field.target_field if isinstance(field, ForeignKey) else field
449
+ is_fk = isinstance(field, ForeignKey)
450
+ case_output_field = field.target_field if is_fk else field
451
+
452
+ # DEBUG: Log field information
453
+ logger.info(
454
+ f"DEBUG MTI Update - Field: {field_name}, "
455
+ f"Model: {field_group.model_class.__name__}, "
456
+ f"IsForeignKey: {is_fk}, "
457
+ f"FieldType: {type(field).__name__}, "
458
+ f"OutputFieldType: {type(case_output_field).__name__}, "
459
+ f"FieldClass: {field.__class__.__module__}.{field.__class__.__name__}"
460
+ )
461
+
462
+ if is_fk:
463
+ logger.info(
464
+ f"DEBUG FK Details - Field: {field_name}, "
465
+ f"attname: {field.attname}, "
466
+ f"target_field: {field.target_field}, "
467
+ f"target_field_type: {type(field.target_field).__name__}"
468
+ )
450
469
 
451
470
  for pk, obj in zip(root_pks, plan.objects):
452
471
  obj_pk = getattr(obj, "pk", None) or getattr(obj, "id", None)
@@ -454,7 +473,17 @@ class BulkExecutor:
454
473
  continue
455
474
 
456
475
  # Get the field value - handle ForeignKey fields specially
457
- value = getattr(obj, field.attname, None) if isinstance(field, ForeignKey) else getattr(obj, field_name)
476
+ value = getattr(obj, field.attname, None) if is_fk else getattr(obj, field_name)
477
+
478
+ # DEBUG: Log value information for first object
479
+ if pk == root_pks[0]:
480
+ logger.info(
481
+ f"DEBUG Value - Field: {field_name}, "
482
+ f"PK: {pk}, "
483
+ f"Value: {value}, "
484
+ f"ValueType: {type(value).__name__}, "
485
+ f"ValueRepr: {repr(value)}"
486
+ )
458
487
 
459
488
  when_statements.append(
460
489
  When(
@@ -465,6 +494,11 @@ class BulkExecutor:
465
494
 
466
495
  if when_statements:
467
496
  case_statements[field_name] = Case(*when_statements, output_field=case_output_field)
497
+ logger.info(
498
+ f"DEBUG Case Statement - Field: {field_name}, "
499
+ f"CaseOutputField: {type(case_output_field).__name__}, "
500
+ f"NumWhenStatements: {len(when_statements)}"
501
+ )
468
502
 
469
503
  # Execute bulk update
470
504
  if case_statements:
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "django-bulk-hooks"
3
- version = "0.2.32"
3
+ version = "0.2.34"
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"