django-bulk-hooks 0.2.47__tar.gz → 0.2.48__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.47 → django_bulk_hooks-0.2.48}/PKG-INFO +1 -1
- {django_bulk_hooks-0.2.47 → django_bulk_hooks-0.2.48}/django_bulk_hooks/operations/bulk_executor.py +12 -7
- {django_bulk_hooks-0.2.47 → django_bulk_hooks-0.2.48}/pyproject.toml +1 -1
- {django_bulk_hooks-0.2.47 → django_bulk_hooks-0.2.48}/LICENSE +0 -0
- {django_bulk_hooks-0.2.47 → django_bulk_hooks-0.2.48}/README.md +0 -0
- {django_bulk_hooks-0.2.47 → django_bulk_hooks-0.2.48}/django_bulk_hooks/__init__.py +0 -0
- {django_bulk_hooks-0.2.47 → django_bulk_hooks-0.2.48}/django_bulk_hooks/changeset.py +0 -0
- {django_bulk_hooks-0.2.47 → django_bulk_hooks-0.2.48}/django_bulk_hooks/conditions.py +0 -0
- {django_bulk_hooks-0.2.47 → django_bulk_hooks-0.2.48}/django_bulk_hooks/constants.py +0 -0
- {django_bulk_hooks-0.2.47 → django_bulk_hooks-0.2.48}/django_bulk_hooks/context.py +0 -0
- {django_bulk_hooks-0.2.47 → django_bulk_hooks-0.2.48}/django_bulk_hooks/decorators.py +0 -0
- {django_bulk_hooks-0.2.47 → django_bulk_hooks-0.2.48}/django_bulk_hooks/dispatcher.py +0 -0
- {django_bulk_hooks-0.2.47 → django_bulk_hooks-0.2.48}/django_bulk_hooks/enums.py +0 -0
- {django_bulk_hooks-0.2.47 → django_bulk_hooks-0.2.48}/django_bulk_hooks/factory.py +0 -0
- {django_bulk_hooks-0.2.47 → django_bulk_hooks-0.2.48}/django_bulk_hooks/handler.py +0 -0
- {django_bulk_hooks-0.2.47 → django_bulk_hooks-0.2.48}/django_bulk_hooks/helpers.py +0 -0
- {django_bulk_hooks-0.2.47 → django_bulk_hooks-0.2.48}/django_bulk_hooks/manager.py +0 -0
- {django_bulk_hooks-0.2.47 → django_bulk_hooks-0.2.48}/django_bulk_hooks/models.py +0 -0
- {django_bulk_hooks-0.2.47 → django_bulk_hooks-0.2.48}/django_bulk_hooks/operations/__init__.py +0 -0
- {django_bulk_hooks-0.2.47 → django_bulk_hooks-0.2.48}/django_bulk_hooks/operations/analyzer.py +0 -0
- {django_bulk_hooks-0.2.47 → django_bulk_hooks-0.2.48}/django_bulk_hooks/operations/coordinator.py +0 -0
- {django_bulk_hooks-0.2.47 → django_bulk_hooks-0.2.48}/django_bulk_hooks/operations/mti_handler.py +0 -0
- {django_bulk_hooks-0.2.47 → django_bulk_hooks-0.2.48}/django_bulk_hooks/operations/mti_plans.py +0 -0
- {django_bulk_hooks-0.2.47 → django_bulk_hooks-0.2.48}/django_bulk_hooks/operations/record_classifier.py +0 -0
- {django_bulk_hooks-0.2.47 → django_bulk_hooks-0.2.48}/django_bulk_hooks/queryset.py +0 -0
- {django_bulk_hooks-0.2.47 → django_bulk_hooks-0.2.48}/django_bulk_hooks/registry.py +0 -0
{django_bulk_hooks-0.2.47 → django_bulk_hooks-0.2.48}/django_bulk_hooks/operations/bulk_executor.py
RENAMED
|
@@ -107,7 +107,7 @@ class BulkExecutor:
|
|
|
107
107
|
|
|
108
108
|
# Tag objects with upsert metadata for hook dispatching
|
|
109
109
|
if update_conflicts and unique_fields:
|
|
110
|
-
self._tag_upsert_metadata(result, existing_record_ids)
|
|
110
|
+
self._tag_upsert_metadata(result, existing_record_ids, existing_pks_map)
|
|
111
111
|
|
|
112
112
|
return result
|
|
113
113
|
|
|
@@ -126,8 +126,8 @@ class BulkExecutor:
|
|
|
126
126
|
if update_conflicts and unique_fields:
|
|
127
127
|
# Use pre-classified results if available, otherwise classify now
|
|
128
128
|
if existing_record_ids is None:
|
|
129
|
-
existing_record_ids,
|
|
130
|
-
self._tag_upsert_metadata(result, existing_record_ids)
|
|
129
|
+
existing_record_ids, existing_pks_map = self.record_classifier.classify_for_upsert(objs, unique_fields)
|
|
130
|
+
self._tag_upsert_metadata(result, existing_record_ids, existing_pks_map)
|
|
131
131
|
|
|
132
132
|
return result
|
|
133
133
|
|
|
@@ -507,7 +507,7 @@ class BulkExecutor:
|
|
|
507
507
|
|
|
508
508
|
return QuerySet.delete(self.queryset)
|
|
509
509
|
|
|
510
|
-
def _tag_upsert_metadata(self, result_objects, existing_record_ids):
|
|
510
|
+
def _tag_upsert_metadata(self, result_objects, existing_record_ids, existing_pks_map):
|
|
511
511
|
"""
|
|
512
512
|
Tag objects with metadata indicating whether they were created or updated.
|
|
513
513
|
|
|
@@ -517,13 +517,18 @@ class BulkExecutor:
|
|
|
517
517
|
Args:
|
|
518
518
|
result_objects: List of objects returned from bulk operation
|
|
519
519
|
existing_record_ids: Set of id() for objects that existed before the operation
|
|
520
|
+
existing_pks_map: Dict mapping id(obj) -> pk for existing records
|
|
520
521
|
"""
|
|
521
522
|
created_count = 0
|
|
522
523
|
updated_count = 0
|
|
523
524
|
|
|
525
|
+
# Create a set of PKs that existed before the operation
|
|
526
|
+
existing_pks = set(existing_pks_map.values())
|
|
527
|
+
|
|
524
528
|
for obj in result_objects:
|
|
525
|
-
#
|
|
526
|
-
|
|
529
|
+
# Use PK to determine if this record was created or updated
|
|
530
|
+
# If the PK was in the existing_pks_map, it was updated; otherwise created
|
|
531
|
+
was_created = obj.pk not in existing_pks
|
|
527
532
|
obj._bulk_hooks_was_created = was_created
|
|
528
533
|
obj._bulk_hooks_upsert_metadata = True
|
|
529
534
|
|
|
@@ -534,6 +539,6 @@ class BulkExecutor:
|
|
|
534
539
|
|
|
535
540
|
logger.info(
|
|
536
541
|
f"Tagged upsert metadata: {created_count} created, {updated_count} updated "
|
|
537
|
-
f"(total={len(result_objects)},
|
|
542
|
+
f"(total={len(result_objects)}, existing_pks={len(existing_pks)})"
|
|
538
543
|
)
|
|
539
544
|
|
|
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.47 → django_bulk_hooks-0.2.48}/django_bulk_hooks/operations/__init__.py
RENAMED
|
File without changes
|
{django_bulk_hooks-0.2.47 → django_bulk_hooks-0.2.48}/django_bulk_hooks/operations/analyzer.py
RENAMED
|
File without changes
|
{django_bulk_hooks-0.2.47 → django_bulk_hooks-0.2.48}/django_bulk_hooks/operations/coordinator.py
RENAMED
|
File without changes
|
{django_bulk_hooks-0.2.47 → django_bulk_hooks-0.2.48}/django_bulk_hooks/operations/mti_handler.py
RENAMED
|
File without changes
|
{django_bulk_hooks-0.2.47 → django_bulk_hooks-0.2.48}/django_bulk_hooks/operations/mti_plans.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|