django-bulk-hooks 0.1.270__tar.gz → 0.1.272__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.1.270 → django_bulk_hooks-0.1.272}/PKG-INFO +1 -1
- {django_bulk_hooks-0.1.270 → django_bulk_hooks-0.1.272}/django_bulk_hooks/queryset.py +16 -10
- {django_bulk_hooks-0.1.270 → django_bulk_hooks-0.1.272}/pyproject.toml +1 -1
- {django_bulk_hooks-0.1.270 → django_bulk_hooks-0.1.272}/LICENSE +0 -0
- {django_bulk_hooks-0.1.270 → django_bulk_hooks-0.1.272}/README.md +0 -0
- {django_bulk_hooks-0.1.270 → django_bulk_hooks-0.1.272}/django_bulk_hooks/__init__.py +0 -0
- {django_bulk_hooks-0.1.270 → django_bulk_hooks-0.1.272}/django_bulk_hooks/conditions.py +0 -0
- {django_bulk_hooks-0.1.270 → django_bulk_hooks-0.1.272}/django_bulk_hooks/constants.py +0 -0
- {django_bulk_hooks-0.1.270 → django_bulk_hooks-0.1.272}/django_bulk_hooks/context.py +0 -0
- {django_bulk_hooks-0.1.270 → django_bulk_hooks-0.1.272}/django_bulk_hooks/decorators.py +0 -0
- {django_bulk_hooks-0.1.270 → django_bulk_hooks-0.1.272}/django_bulk_hooks/engine.py +0 -0
- {django_bulk_hooks-0.1.270 → django_bulk_hooks-0.1.272}/django_bulk_hooks/enums.py +0 -0
- {django_bulk_hooks-0.1.270 → django_bulk_hooks-0.1.272}/django_bulk_hooks/handler.py +0 -0
- {django_bulk_hooks-0.1.270 → django_bulk_hooks-0.1.272}/django_bulk_hooks/manager.py +0 -0
- {django_bulk_hooks-0.1.270 → django_bulk_hooks-0.1.272}/django_bulk_hooks/models.py +0 -0
- {django_bulk_hooks-0.1.270 → django_bulk_hooks-0.1.272}/django_bulk_hooks/priority.py +0 -0
- {django_bulk_hooks-0.1.270 → django_bulk_hooks-0.1.272}/django_bulk_hooks/registry.py +0 -0
|
@@ -534,13 +534,14 @@ class HookQuerySetMixin:
|
|
|
534
534
|
unique_value = {}
|
|
535
535
|
query_fields = {} # Track which database field to use for each unique field
|
|
536
536
|
for field_name in unique_fields:
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
query_fields[field_name] = field_name
|
|
540
|
-
elif hasattr(obj, field_name + '_id'):
|
|
537
|
+
# First check for _id field (more reliable for ForeignKeys)
|
|
538
|
+
if hasattr(obj, field_name + '_id'):
|
|
541
539
|
# Handle ForeignKey fields where _id suffix is used
|
|
542
540
|
unique_value[field_name] = getattr(obj, field_name + '_id')
|
|
543
541
|
query_fields[field_name] = field_name + '_id' # Use _id field for query
|
|
542
|
+
elif hasattr(obj, field_name):
|
|
543
|
+
unique_value[field_name] = getattr(obj, field_name)
|
|
544
|
+
query_fields[field_name] = field_name
|
|
544
545
|
if unique_value:
|
|
545
546
|
unique_values.append((unique_value, query_fields))
|
|
546
547
|
|
|
@@ -557,12 +558,16 @@ class HookQuerySetMixin:
|
|
|
557
558
|
filter_kwargs[db_field_name] = value
|
|
558
559
|
existing_filters |= Q(**filter_kwargs)
|
|
559
560
|
|
|
561
|
+
logger.debug(f"DEBUG: Existence check query filters: {existing_filters}")
|
|
562
|
+
logger.debug(f"DEBUG: Unique fields for values_list: {unique_fields}")
|
|
563
|
+
|
|
560
564
|
# Get all existing records in one query and create a lookup set
|
|
561
565
|
# We need to use the original unique_fields for values_list to maintain consistency
|
|
562
566
|
existing_records_lookup = set()
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
567
|
+
existing_query = model_cls.objects.filter(existing_filters)
|
|
568
|
+
logger.debug(f"DEBUG: Existence check SQL: {existing_query.query}")
|
|
569
|
+
|
|
570
|
+
for existing_record in existing_query.values_list(*unique_fields):
|
|
566
571
|
# Convert tuple to a hashable key for lookup
|
|
567
572
|
existing_records_lookup.add(existing_record)
|
|
568
573
|
|
|
@@ -570,11 +575,12 @@ class HookQuerySetMixin:
|
|
|
570
575
|
for obj in objs:
|
|
571
576
|
obj_unique_value = {}
|
|
572
577
|
for field_name in unique_fields:
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
elif hasattr(obj, field_name + '_id'):
|
|
578
|
+
# First check for _id field (more reliable for ForeignKeys)
|
|
579
|
+
if hasattr(obj, field_name + '_id'):
|
|
576
580
|
# Handle ForeignKey fields where _id suffix is used
|
|
577
581
|
obj_unique_value[field_name] = getattr(obj, field_name + '_id')
|
|
582
|
+
elif hasattr(obj, field_name):
|
|
583
|
+
obj_unique_value[field_name] = getattr(obj, field_name)
|
|
578
584
|
|
|
579
585
|
# Check if this record already exists using our bulk lookup
|
|
580
586
|
if obj_unique_value:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "django-bulk-hooks"
|
|
3
|
-
version = "0.1.
|
|
3
|
+
version = "0.1.272"
|
|
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"
|
|
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
|