django-bulk-hooks 0.1.271__py3-none-any.whl → 0.1.273__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
 
@@ -566,19 +567,29 @@ class HookQuerySetMixin:
566
567
  existing_query = model_cls.objects.filter(existing_filters)
567
568
  logger.debug(f"DEBUG: Existence check SQL: {existing_query.query}")
568
569
 
569
- for existing_record in existing_query.values_list(*unique_fields):
570
+ # Also get the raw database values for debugging
571
+ raw_existing = list(existing_query.values_list(*unique_fields))
572
+ logger.debug(f"DEBUG: Raw existing records from DB: {raw_existing}")
573
+
574
+ existing_records_found = []
575
+ for existing_record in raw_existing:
570
576
  # Convert tuple to a hashable key for lookup
571
577
  existing_records_lookup.add(existing_record)
578
+ existing_records_found.append(existing_record)
579
+
580
+ logger.debug(f"DEBUG: Found {len(existing_records_found)} existing records: {existing_records_found}")
581
+ logger.debug(f"DEBUG: Existing records lookup set: {existing_records_lookup}")
572
582
 
573
583
  # Separate records based on whether they already exist
574
584
  for obj in objs:
575
585
  obj_unique_value = {}
576
586
  for field_name in unique_fields:
577
- if hasattr(obj, field_name):
578
- obj_unique_value[field_name] = getattr(obj, field_name)
579
- elif hasattr(obj, field_name + '_id'):
587
+ # First check for _id field (more reliable for ForeignKeys)
588
+ if hasattr(obj, field_name + '_id'):
580
589
  # Handle ForeignKey fields where _id suffix is used
581
590
  obj_unique_value[field_name] = getattr(obj, field_name + '_id')
591
+ elif hasattr(obj, field_name):
592
+ obj_unique_value[field_name] = getattr(obj, field_name)
582
593
 
583
594
  # Check if this record already exists using our bulk lookup
584
595
  if obj_unique_value:
@@ -587,10 +598,14 @@ class HookQuerySetMixin:
587
598
  obj_unique_value[field_name]
588
599
  for field_name in unique_fields
589
600
  )
601
+ logger.debug(f"DEBUG: Object unique tuple: {obj_unique_tuple}")
602
+ logger.debug(f"DEBUG: Object unique value: {obj_unique_value}")
590
603
  if obj_unique_tuple in existing_records_lookup:
591
604
  existing_records.append(obj)
605
+ logger.debug(f"DEBUG: Found existing record for tuple: {obj_unique_tuple}")
592
606
  else:
593
607
  new_records.append(obj)
608
+ logger.debug(f"DEBUG: No existing record found for tuple: {obj_unique_tuple}")
594
609
  else:
595
610
  # If we can't determine uniqueness, treat as new
596
611
  new_records.append(obj)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: django-bulk-hooks
3
- Version: 0.1.271
3
+ Version: 0.1.273
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=2Ikzve6IsE4lku33hxtrIsouoeYkEwWLrYGz_kAmnHg,90614
12
+ django_bulk_hooks/queryset.py,sha256=CygwWOajSluKasPnWx1q2aYoo2fUuxdQIWMtFz79EAE,91759
13
13
  django_bulk_hooks/registry.py,sha256=GRUTGVQEO2sdkC9OaZ9Q3U7mM-3Ix83uTyvrlTtpatw,1317
14
- django_bulk_hooks-0.1.271.dist-info/LICENSE,sha256=dguKIcbDGeZD-vXWdLyErPUALYOvtX_fO4Zjhq481uk,1088
15
- django_bulk_hooks-0.1.271.dist-info/METADATA,sha256=5ysS8y9iRarXdKATSCGorq3-0H8LD-tkrjXgxVXWeFw,9115
16
- django_bulk_hooks-0.1.271.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
17
- django_bulk_hooks-0.1.271.dist-info/RECORD,,
14
+ django_bulk_hooks-0.1.273.dist-info/LICENSE,sha256=dguKIcbDGeZD-vXWdLyErPUALYOvtX_fO4Zjhq481uk,1088
15
+ django_bulk_hooks-0.1.273.dist-info/METADATA,sha256=BseynOD4ulG27HHjnLDNwj7ubOJIvNXrijGz138yulU,9115
16
+ django_bulk_hooks-0.1.273.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
17
+ django_bulk_hooks-0.1.273.dist-info/RECORD,,