django-bulk-hooks 0.2.25__tar.gz → 0.2.27__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.
- {django_bulk_hooks-0.2.25 → django_bulk_hooks-0.2.27}/PKG-INFO +1 -1
- {django_bulk_hooks-0.2.25 → django_bulk_hooks-0.2.27}/django_bulk_hooks/operations/bulk_executor.py +11 -16
- {django_bulk_hooks-0.2.25 → django_bulk_hooks-0.2.27}/pyproject.toml +1 -1
- {django_bulk_hooks-0.2.25 → django_bulk_hooks-0.2.27}/LICENSE +0 -0
- {django_bulk_hooks-0.2.25 → django_bulk_hooks-0.2.27}/README.md +0 -0
- {django_bulk_hooks-0.2.25 → django_bulk_hooks-0.2.27}/django_bulk_hooks/__init__.py +0 -0
- {django_bulk_hooks-0.2.25 → django_bulk_hooks-0.2.27}/django_bulk_hooks/changeset.py +0 -0
- {django_bulk_hooks-0.2.25 → django_bulk_hooks-0.2.27}/django_bulk_hooks/conditions.py +0 -0
- {django_bulk_hooks-0.2.25 → django_bulk_hooks-0.2.27}/django_bulk_hooks/constants.py +0 -0
- {django_bulk_hooks-0.2.25 → django_bulk_hooks-0.2.27}/django_bulk_hooks/context.py +0 -0
- {django_bulk_hooks-0.2.25 → django_bulk_hooks-0.2.27}/django_bulk_hooks/decorators.py +0 -0
- {django_bulk_hooks-0.2.25 → django_bulk_hooks-0.2.27}/django_bulk_hooks/dispatcher.py +0 -0
- {django_bulk_hooks-0.2.25 → django_bulk_hooks-0.2.27}/django_bulk_hooks/enums.py +0 -0
- {django_bulk_hooks-0.2.25 → django_bulk_hooks-0.2.27}/django_bulk_hooks/factory.py +0 -0
- {django_bulk_hooks-0.2.25 → django_bulk_hooks-0.2.27}/django_bulk_hooks/handler.py +0 -0
- {django_bulk_hooks-0.2.25 → django_bulk_hooks-0.2.27}/django_bulk_hooks/helpers.py +0 -0
- {django_bulk_hooks-0.2.25 → django_bulk_hooks-0.2.27}/django_bulk_hooks/manager.py +0 -0
- {django_bulk_hooks-0.2.25 → django_bulk_hooks-0.2.27}/django_bulk_hooks/models.py +0 -0
- {django_bulk_hooks-0.2.25 → django_bulk_hooks-0.2.27}/django_bulk_hooks/operations/__init__.py +0 -0
- {django_bulk_hooks-0.2.25 → django_bulk_hooks-0.2.27}/django_bulk_hooks/operations/analyzer.py +0 -0
- {django_bulk_hooks-0.2.25 → django_bulk_hooks-0.2.27}/django_bulk_hooks/operations/coordinator.py +0 -0
- {django_bulk_hooks-0.2.25 → django_bulk_hooks-0.2.27}/django_bulk_hooks/operations/mti_handler.py +0 -0
- {django_bulk_hooks-0.2.25 → django_bulk_hooks-0.2.27}/django_bulk_hooks/operations/mti_plans.py +0 -0
- {django_bulk_hooks-0.2.25 → django_bulk_hooks-0.2.27}/django_bulk_hooks/operations/record_classifier.py +0 -0
- {django_bulk_hooks-0.2.25 → django_bulk_hooks-0.2.27}/django_bulk_hooks/queryset.py +0 -0
- {django_bulk_hooks-0.2.25 → django_bulk_hooks-0.2.27}/django_bulk_hooks/registry.py +0 -0
{django_bulk_hooks-0.2.25 → django_bulk_hooks-0.2.27}/django_bulk_hooks/operations/bulk_executor.py
RENAMED
|
@@ -459,8 +459,16 @@ class BulkExecutor:
|
|
|
459
459
|
# Use column name for FK fields
|
|
460
460
|
if getattr(field, "is_relation", False) and hasattr(field, "attname"):
|
|
461
461
|
db_field_name = field.attname
|
|
462
|
-
#
|
|
463
|
-
|
|
462
|
+
# For FK fields, use the actual target field from the relationship
|
|
463
|
+
# This ensures proper type casting for the database column
|
|
464
|
+
if hasattr(field, "target_field"):
|
|
465
|
+
target_field = field.target_field
|
|
466
|
+
else:
|
|
467
|
+
# Fallback: create a field that matches the FK column type
|
|
468
|
+
from django.db.models import BigIntegerField
|
|
469
|
+
target_field = BigIntegerField()
|
|
470
|
+
|
|
471
|
+
logger.debug(f"FK field {field_name} -> column {db_field_name}, target_field: {target_field}")
|
|
464
472
|
else:
|
|
465
473
|
db_field_name = field_name
|
|
466
474
|
target_field = field
|
|
@@ -475,30 +483,17 @@ class BulkExecutor:
|
|
|
475
483
|
|
|
476
484
|
# For FK fields, ensure we get the actual ID value, not the related object
|
|
477
485
|
if getattr(field, "is_relation", False) and hasattr(field, "attname"):
|
|
478
|
-
# ADD DEBUG LOGGING
|
|
479
|
-
logger.error(f"DEBUG FK CONVERSION: field={field_name}, db_field={db_field_name}")
|
|
480
|
-
logger.error(f"DEBUG FK VALUE BEFORE: value={value!r}, type={type(value)}")
|
|
481
|
-
logger.error(f"DEBUG FK field.attname={field.attname}, field.target_field={getattr(field, 'target_field', 'N/A')}")
|
|
482
|
-
|
|
483
486
|
# If value is a model instance, get its pk
|
|
484
487
|
if value is not None and hasattr(value, "pk"):
|
|
485
488
|
value = value.pk
|
|
486
|
-
logger.error(f"DEBUG FK: Extracted pk from model instance: {value!r}")
|
|
487
489
|
# If value is a string representation of an ID, convert to int
|
|
488
490
|
elif value is not None and isinstance(value, str):
|
|
489
|
-
logger.error(f"DEBUG FK: Value is string, isdigit()={value.isdigit()}")
|
|
490
491
|
if value.isdigit():
|
|
491
492
|
value = int(value)
|
|
492
|
-
logger.error(f"DEBUG FK: Converted string to int: {value!r}")
|
|
493
493
|
elif value == "":
|
|
494
494
|
value = None
|
|
495
|
-
logger.error(f"DEBUG FK: Converted empty string to None")
|
|
496
|
-
else:
|
|
497
|
-
logger.error(f"DEBUG FK: String value doesn't pass isdigit() check! ASCII codes: {[ord(c) for c in value]}")
|
|
498
|
-
|
|
499
|
-
logger.error(f"DEBUG FK VALUE AFTER: value={value!r}, type={type(value)}")
|
|
500
495
|
|
|
501
|
-
# Create the Value expression
|
|
496
|
+
# Create the Value expression with proper type casting
|
|
502
497
|
value_expr = Value(value, output_field=target_field)
|
|
503
498
|
|
|
504
499
|
when_statements.append(
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{django_bulk_hooks-0.2.25 → django_bulk_hooks-0.2.27}/django_bulk_hooks/operations/__init__.py
RENAMED
|
File without changes
|
{django_bulk_hooks-0.2.25 → django_bulk_hooks-0.2.27}/django_bulk_hooks/operations/analyzer.py
RENAMED
|
File without changes
|
{django_bulk_hooks-0.2.25 → django_bulk_hooks-0.2.27}/django_bulk_hooks/operations/coordinator.py
RENAMED
|
File without changes
|
{django_bulk_hooks-0.2.25 → django_bulk_hooks-0.2.27}/django_bulk_hooks/operations/mti_handler.py
RENAMED
|
File without changes
|
{django_bulk_hooks-0.2.25 → django_bulk_hooks-0.2.27}/django_bulk_hooks/operations/mti_plans.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|