django-bulk-hooks 0.2.39__tar.gz → 0.2.40__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.39 → django_bulk_hooks-0.2.40}/PKG-INFO +1 -1
- {django_bulk_hooks-0.2.39 → django_bulk_hooks-0.2.40}/django_bulk_hooks/operations/bulk_executor.py +6 -5
- {django_bulk_hooks-0.2.39 → django_bulk_hooks-0.2.40}/pyproject.toml +1 -1
- {django_bulk_hooks-0.2.39 → django_bulk_hooks-0.2.40}/LICENSE +0 -0
- {django_bulk_hooks-0.2.39 → django_bulk_hooks-0.2.40}/README.md +0 -0
- {django_bulk_hooks-0.2.39 → django_bulk_hooks-0.2.40}/django_bulk_hooks/__init__.py +0 -0
- {django_bulk_hooks-0.2.39 → django_bulk_hooks-0.2.40}/django_bulk_hooks/changeset.py +0 -0
- {django_bulk_hooks-0.2.39 → django_bulk_hooks-0.2.40}/django_bulk_hooks/conditions.py +0 -0
- {django_bulk_hooks-0.2.39 → django_bulk_hooks-0.2.40}/django_bulk_hooks/constants.py +0 -0
- {django_bulk_hooks-0.2.39 → django_bulk_hooks-0.2.40}/django_bulk_hooks/context.py +0 -0
- {django_bulk_hooks-0.2.39 → django_bulk_hooks-0.2.40}/django_bulk_hooks/decorators.py +0 -0
- {django_bulk_hooks-0.2.39 → django_bulk_hooks-0.2.40}/django_bulk_hooks/dispatcher.py +0 -0
- {django_bulk_hooks-0.2.39 → django_bulk_hooks-0.2.40}/django_bulk_hooks/enums.py +0 -0
- {django_bulk_hooks-0.2.39 → django_bulk_hooks-0.2.40}/django_bulk_hooks/factory.py +0 -0
- {django_bulk_hooks-0.2.39 → django_bulk_hooks-0.2.40}/django_bulk_hooks/handler.py +0 -0
- {django_bulk_hooks-0.2.39 → django_bulk_hooks-0.2.40}/django_bulk_hooks/helpers.py +0 -0
- {django_bulk_hooks-0.2.39 → django_bulk_hooks-0.2.40}/django_bulk_hooks/manager.py +0 -0
- {django_bulk_hooks-0.2.39 → django_bulk_hooks-0.2.40}/django_bulk_hooks/models.py +0 -0
- {django_bulk_hooks-0.2.39 → django_bulk_hooks-0.2.40}/django_bulk_hooks/operations/__init__.py +0 -0
- {django_bulk_hooks-0.2.39 → django_bulk_hooks-0.2.40}/django_bulk_hooks/operations/analyzer.py +0 -0
- {django_bulk_hooks-0.2.39 → django_bulk_hooks-0.2.40}/django_bulk_hooks/operations/coordinator.py +0 -0
- {django_bulk_hooks-0.2.39 → django_bulk_hooks-0.2.40}/django_bulk_hooks/operations/mti_handler.py +0 -0
- {django_bulk_hooks-0.2.39 → django_bulk_hooks-0.2.40}/django_bulk_hooks/operations/mti_plans.py +0 -0
- {django_bulk_hooks-0.2.39 → django_bulk_hooks-0.2.40}/django_bulk_hooks/operations/record_classifier.py +0 -0
- {django_bulk_hooks-0.2.39 → django_bulk_hooks-0.2.40}/django_bulk_hooks/queryset.py +0 -0
- {django_bulk_hooks-0.2.39 → django_bulk_hooks-0.2.40}/django_bulk_hooks/registry.py +0 -0
{django_bulk_hooks-0.2.39 → django_bulk_hooks-0.2.40}/django_bulk_hooks/operations/bulk_executor.py
RENAMED
|
@@ -7,7 +7,8 @@ This service coordinates bulk database operations with validation and MTI handli
|
|
|
7
7
|
import logging
|
|
8
8
|
|
|
9
9
|
from django.db import transaction
|
|
10
|
-
from django.db.models import AutoField, ForeignKey
|
|
10
|
+
from django.db.models import AutoField, ForeignKey, Case, When, Value
|
|
11
|
+
from django.db.models.functions import Cast
|
|
11
12
|
|
|
12
13
|
logger = logging.getLogger(__name__)
|
|
13
14
|
|
|
@@ -487,16 +488,16 @@ class BulkExecutor:
|
|
|
487
488
|
|
|
488
489
|
# Handle NULL values specially for ForeignKey fields
|
|
489
490
|
if is_fk and value is None:
|
|
490
|
-
# For ForeignKey fields with None values, use
|
|
491
|
-
#
|
|
491
|
+
# For ForeignKey fields with None values, use Cast to ensure proper NULL type
|
|
492
|
+
# PostgreSQL needs explicit type casting for NULL values in CASE statements
|
|
492
493
|
logger.info(
|
|
493
494
|
f"DEBUG NULL FIX APPLIED - Field: {field_name}, "
|
|
494
|
-
f"PK: {pk}, Using Value(None)
|
|
495
|
+
f"PK: {pk}, Using Cast(Value(None), output_field={type(case_output_field).__name__})"
|
|
495
496
|
)
|
|
496
497
|
when_statements.append(
|
|
497
498
|
When(
|
|
498
499
|
**{field_group.filter_field: pk},
|
|
499
|
-
then=Value(None, output_field=case_output_field),
|
|
500
|
+
then=Cast(Value(None), output_field=case_output_field),
|
|
500
501
|
),
|
|
501
502
|
)
|
|
502
503
|
else:
|
|
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.39 → django_bulk_hooks-0.2.40}/django_bulk_hooks/operations/__init__.py
RENAMED
|
File without changes
|
{django_bulk_hooks-0.2.39 → django_bulk_hooks-0.2.40}/django_bulk_hooks/operations/analyzer.py
RENAMED
|
File without changes
|
{django_bulk_hooks-0.2.39 → django_bulk_hooks-0.2.40}/django_bulk_hooks/operations/coordinator.py
RENAMED
|
File without changes
|
{django_bulk_hooks-0.2.39 → django_bulk_hooks-0.2.40}/django_bulk_hooks/operations/mti_handler.py
RENAMED
|
File without changes
|
{django_bulk_hooks-0.2.39 → django_bulk_hooks-0.2.40}/django_bulk_hooks/operations/mti_plans.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|