django-bulk-hooks 0.1.272__tar.gz → 0.1.274__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.

Files changed (17) hide show
  1. {django_bulk_hooks-0.1.272 → django_bulk_hooks-0.1.274}/PKG-INFO +1 -1
  2. {django_bulk_hooks-0.1.272 → django_bulk_hooks-0.1.274}/django_bulk_hooks/queryset.py +28 -3
  3. {django_bulk_hooks-0.1.272 → django_bulk_hooks-0.1.274}/pyproject.toml +1 -1
  4. {django_bulk_hooks-0.1.272 → django_bulk_hooks-0.1.274}/LICENSE +0 -0
  5. {django_bulk_hooks-0.1.272 → django_bulk_hooks-0.1.274}/README.md +0 -0
  6. {django_bulk_hooks-0.1.272 → django_bulk_hooks-0.1.274}/django_bulk_hooks/__init__.py +0 -0
  7. {django_bulk_hooks-0.1.272 → django_bulk_hooks-0.1.274}/django_bulk_hooks/conditions.py +0 -0
  8. {django_bulk_hooks-0.1.272 → django_bulk_hooks-0.1.274}/django_bulk_hooks/constants.py +0 -0
  9. {django_bulk_hooks-0.1.272 → django_bulk_hooks-0.1.274}/django_bulk_hooks/context.py +0 -0
  10. {django_bulk_hooks-0.1.272 → django_bulk_hooks-0.1.274}/django_bulk_hooks/decorators.py +0 -0
  11. {django_bulk_hooks-0.1.272 → django_bulk_hooks-0.1.274}/django_bulk_hooks/engine.py +0 -0
  12. {django_bulk_hooks-0.1.272 → django_bulk_hooks-0.1.274}/django_bulk_hooks/enums.py +0 -0
  13. {django_bulk_hooks-0.1.272 → django_bulk_hooks-0.1.274}/django_bulk_hooks/handler.py +0 -0
  14. {django_bulk_hooks-0.1.272 → django_bulk_hooks-0.1.274}/django_bulk_hooks/manager.py +0 -0
  15. {django_bulk_hooks-0.1.272 → django_bulk_hooks-0.1.274}/django_bulk_hooks/models.py +0 -0
  16. {django_bulk_hooks-0.1.272 → django_bulk_hooks-0.1.274}/django_bulk_hooks/priority.py +0 -0
  17. {django_bulk_hooks-0.1.272 → django_bulk_hooks-0.1.274}/django_bulk_hooks/registry.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: django-bulk-hooks
3
- Version: 0.1.272
3
+ Version: 0.1.274
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
@@ -567,9 +567,30 @@ class HookQuerySetMixin:
567
567
  existing_query = model_cls.objects.filter(existing_filters)
568
568
  logger.debug(f"DEBUG: Existence check SQL: {existing_query.query}")
569
569
 
570
- for existing_record in existing_query.values_list(*unique_fields):
571
- # Convert tuple to a hashable key for lookup
572
- existing_records_lookup.add(existing_record)
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
+ # Convert database values to match object types for comparison
575
+ # This handles cases where object values are strings but DB values are integers
576
+ existing_records_lookup = set()
577
+ for existing_record in raw_existing:
578
+ # Convert each value in the tuple to match the type from object extraction
579
+ converted_record = []
580
+ for i, field_name in enumerate(unique_fields):
581
+ db_value = existing_record[i]
582
+ # Check if this field uses _id suffix in the query
583
+ query_field_name = query_fields[field_name]
584
+ if query_field_name.endswith('_id'):
585
+ # Convert to string to match how we extract from objects
586
+ converted_record.append(str(db_value))
587
+ else:
588
+ converted_record.append(db_value)
589
+ converted_tuple = tuple(converted_record)
590
+ existing_records_lookup.add(converted_tuple)
591
+
592
+ logger.debug(f"DEBUG: Found {len(raw_existing)} existing records from DB")
593
+ logger.debug(f"DEBUG: Existing records lookup set: {existing_records_lookup}")
573
594
 
574
595
  # Separate records based on whether they already exist
575
596
  for obj in objs:
@@ -589,10 +610,14 @@ class HookQuerySetMixin:
589
610
  obj_unique_value[field_name]
590
611
  for field_name in unique_fields
591
612
  )
613
+ logger.debug(f"DEBUG: Object unique tuple: {obj_unique_tuple}")
614
+ logger.debug(f"DEBUG: Object unique value: {obj_unique_value}")
592
615
  if obj_unique_tuple in existing_records_lookup:
593
616
  existing_records.append(obj)
617
+ logger.debug(f"DEBUG: Found existing record for tuple: {obj_unique_tuple}")
594
618
  else:
595
619
  new_records.append(obj)
620
+ logger.debug(f"DEBUG: No existing record found for tuple: {obj_unique_tuple}")
596
621
  else:
597
622
  # If we can't determine uniqueness, treat as new
598
623
  new_records.append(obj)
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "django-bulk-hooks"
3
- version = "0.1.272"
3
+ version = "0.1.274"
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"