django-bulk-hooks 0.2.19__tar.gz → 0.2.20__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.19 → django_bulk_hooks-0.2.20}/PKG-INFO +1 -1
  2. {django_bulk_hooks-0.2.19 → django_bulk_hooks-0.2.20}/django_bulk_hooks/operations/bulk_executor.py +18 -5
  3. {django_bulk_hooks-0.2.19 → django_bulk_hooks-0.2.20}/pyproject.toml +1 -1
  4. {django_bulk_hooks-0.2.19 → django_bulk_hooks-0.2.20}/LICENSE +0 -0
  5. {django_bulk_hooks-0.2.19 → django_bulk_hooks-0.2.20}/README.md +0 -0
  6. {django_bulk_hooks-0.2.19 → django_bulk_hooks-0.2.20}/django_bulk_hooks/__init__.py +0 -0
  7. {django_bulk_hooks-0.2.19 → django_bulk_hooks-0.2.20}/django_bulk_hooks/changeset.py +0 -0
  8. {django_bulk_hooks-0.2.19 → django_bulk_hooks-0.2.20}/django_bulk_hooks/conditions.py +0 -0
  9. {django_bulk_hooks-0.2.19 → django_bulk_hooks-0.2.20}/django_bulk_hooks/constants.py +0 -0
  10. {django_bulk_hooks-0.2.19 → django_bulk_hooks-0.2.20}/django_bulk_hooks/context.py +0 -0
  11. {django_bulk_hooks-0.2.19 → django_bulk_hooks-0.2.20}/django_bulk_hooks/decorators.py +0 -0
  12. {django_bulk_hooks-0.2.19 → django_bulk_hooks-0.2.20}/django_bulk_hooks/dispatcher.py +0 -0
  13. {django_bulk_hooks-0.2.19 → django_bulk_hooks-0.2.20}/django_bulk_hooks/enums.py +0 -0
  14. {django_bulk_hooks-0.2.19 → django_bulk_hooks-0.2.20}/django_bulk_hooks/factory.py +0 -0
  15. {django_bulk_hooks-0.2.19 → django_bulk_hooks-0.2.20}/django_bulk_hooks/handler.py +0 -0
  16. {django_bulk_hooks-0.2.19 → django_bulk_hooks-0.2.20}/django_bulk_hooks/helpers.py +0 -0
  17. {django_bulk_hooks-0.2.19 → django_bulk_hooks-0.2.20}/django_bulk_hooks/manager.py +0 -0
  18. {django_bulk_hooks-0.2.19 → django_bulk_hooks-0.2.20}/django_bulk_hooks/models.py +0 -0
  19. {django_bulk_hooks-0.2.19 → django_bulk_hooks-0.2.20}/django_bulk_hooks/operations/__init__.py +0 -0
  20. {django_bulk_hooks-0.2.19 → django_bulk_hooks-0.2.20}/django_bulk_hooks/operations/analyzer.py +0 -0
  21. {django_bulk_hooks-0.2.19 → django_bulk_hooks-0.2.20}/django_bulk_hooks/operations/coordinator.py +0 -0
  22. {django_bulk_hooks-0.2.19 → django_bulk_hooks-0.2.20}/django_bulk_hooks/operations/mti_handler.py +0 -0
  23. {django_bulk_hooks-0.2.19 → django_bulk_hooks-0.2.20}/django_bulk_hooks/operations/mti_plans.py +0 -0
  24. {django_bulk_hooks-0.2.19 → django_bulk_hooks-0.2.20}/django_bulk_hooks/operations/record_classifier.py +0 -0
  25. {django_bulk_hooks-0.2.19 → django_bulk_hooks-0.2.20}/django_bulk_hooks/queryset.py +0 -0
  26. {django_bulk_hooks-0.2.19 → django_bulk_hooks-0.2.20}/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.19
3
+ Version: 0.2.20
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
@@ -474,15 +474,28 @@ class BulkExecutor:
474
474
 
475
475
  # For FK fields, ensure we get the actual ID value, not the related object
476
476
  if getattr(field, "is_relation", False) and hasattr(field, "attname"):
477
+ # ADD DEBUG LOGGING
478
+ logger.error(f"DEBUG FK CONVERSION: field={field_name}, db_field={db_field_name}")
479
+ logger.error(f"DEBUG FK VALUE BEFORE: value={value!r}, type={type(value)}")
480
+ logger.error(f"DEBUG FK field.attname={field.attname}, field.target_field={getattr(field, 'target_field', 'N/A')}")
481
+
477
482
  # If value is a model instance, get its pk
478
483
  if value is not None and hasattr(value, "pk"):
479
484
  value = value.pk
485
+ logger.error(f"DEBUG FK: Extracted pk from model instance: {value!r}")
480
486
  # If value is a string representation of an ID, convert to int
481
- elif value is not None and isinstance(value, str) and value.isdigit():
482
- value = int(value)
483
- # If value is None or empty string, ensure it's None
484
- elif value == "":
485
- value = None
487
+ elif value is not None and isinstance(value, str):
488
+ logger.error(f"DEBUG FK: Value is string, isdigit()={value.isdigit()}")
489
+ if value.isdigit():
490
+ value = int(value)
491
+ logger.error(f"DEBUG FK: Converted string to int: {value!r}")
492
+ elif value == "":
493
+ value = None
494
+ logger.error(f"DEBUG FK: Converted empty string to None")
495
+ else:
496
+ logger.error(f"DEBUG FK: String value doesn't pass isdigit() check! ASCII codes: {[ord(c) for c in value]}")
497
+
498
+ logger.error(f"DEBUG FK VALUE AFTER: value={value!r}, type={type(value)}")
486
499
 
487
500
  when_statements.append(
488
501
  When(
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "django-bulk-hooks"
3
- version = "0.2.19"
3
+ version = "0.2.20"
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"