django-bulk-hooks 0.1.270__py3-none-any.whl → 0.1.272__py3-none-any.whl

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.

@@ -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
- if hasattr(obj, field_name):
538
- unique_value[field_name] = getattr(obj, field_name)
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
- for existing_record in model_cls.objects.filter(
564
- existing_filters
565
- ).values_list(*unique_fields):
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
- if hasattr(obj, field_name):
574
- obj_unique_value[field_name] = getattr(obj, field_name)
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
  Metadata-Version: 2.3
2
2
  Name: django-bulk-hooks
3
- Version: 0.1.270
3
+ Version: 0.1.272
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
@@ -9,9 +9,9 @@ django_bulk_hooks/handler.py,sha256=Bx-W6yyiciKMyy-BRxUt3CmRPCrX9_LhQgU-5LaJTjg,
9
9
  django_bulk_hooks/manager.py,sha256=3jNWL-EkvGScsliNc7mW-ozQCG6HyaEevI1u1BFS4AA,3836
10
10
  django_bulk_hooks/models.py,sha256=WtSfc4GBOG_oOt8n37cVvid0MtFIGze9JYKSixil2y0,4370
11
11
  django_bulk_hooks/priority.py,sha256=HG_2D35nga68lBCZmSXTcplXrjFoRgZFRDOy4ROKonY,376
12
- django_bulk_hooks/queryset.py,sha256=GggX-BoBm9hKcO5Bs6N2oQQ01yjhhGCBdz6YK4gkuHQ,90329
12
+ django_bulk_hooks/queryset.py,sha256=7J1kU8trTSXKatdu2cE7sN39KTL5179YYPjjjzbBOe4,90788
13
13
  django_bulk_hooks/registry.py,sha256=GRUTGVQEO2sdkC9OaZ9Q3U7mM-3Ix83uTyvrlTtpatw,1317
14
- django_bulk_hooks-0.1.270.dist-info/LICENSE,sha256=dguKIcbDGeZD-vXWdLyErPUALYOvtX_fO4Zjhq481uk,1088
15
- django_bulk_hooks-0.1.270.dist-info/METADATA,sha256=fCm_gvOH4hJioiQe3eRm-74Eg_nqhuxUu85oE9lLwm4,9115
16
- django_bulk_hooks-0.1.270.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
17
- django_bulk_hooks-0.1.270.dist-info/RECORD,,
14
+ django_bulk_hooks-0.1.272.dist-info/LICENSE,sha256=dguKIcbDGeZD-vXWdLyErPUALYOvtX_fO4Zjhq481uk,1088
15
+ django_bulk_hooks-0.1.272.dist-info/METADATA,sha256=rVznllpFeHYu1UyNYJPYM90biupnGzzpX2eQCEvJ5XM,9115
16
+ django_bulk_hooks-0.1.272.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
17
+ django_bulk_hooks-0.1.272.dist-info/RECORD,,