django-bulk-hooks 0.1.106__tar.gz → 0.1.108__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.106 → django_bulk_hooks-0.1.108}/PKG-INFO +1 -1
- {django_bulk_hooks-0.1.106 → django_bulk_hooks-0.1.108}/django_bulk_hooks/manager.py +25 -8
- {django_bulk_hooks-0.1.106 → django_bulk_hooks-0.1.108}/pyproject.toml +1 -1
- {django_bulk_hooks-0.1.106 → django_bulk_hooks-0.1.108}/LICENSE +0 -0
- {django_bulk_hooks-0.1.106 → django_bulk_hooks-0.1.108}/README.md +0 -0
- {django_bulk_hooks-0.1.106 → django_bulk_hooks-0.1.108}/django_bulk_hooks/__init__.py +0 -0
- {django_bulk_hooks-0.1.106 → django_bulk_hooks-0.1.108}/django_bulk_hooks/conditions.py +0 -0
- {django_bulk_hooks-0.1.106 → django_bulk_hooks-0.1.108}/django_bulk_hooks/constants.py +0 -0
- {django_bulk_hooks-0.1.106 → django_bulk_hooks-0.1.108}/django_bulk_hooks/context.py +0 -0
- {django_bulk_hooks-0.1.106 → django_bulk_hooks-0.1.108}/django_bulk_hooks/decorators.py +0 -0
- {django_bulk_hooks-0.1.106 → django_bulk_hooks-0.1.108}/django_bulk_hooks/engine.py +0 -0
- {django_bulk_hooks-0.1.106 → django_bulk_hooks-0.1.108}/django_bulk_hooks/enums.py +0 -0
- {django_bulk_hooks-0.1.106 → django_bulk_hooks-0.1.108}/django_bulk_hooks/handler.py +0 -0
- {django_bulk_hooks-0.1.106 → django_bulk_hooks-0.1.108}/django_bulk_hooks/models.py +0 -0
- {django_bulk_hooks-0.1.106 → django_bulk_hooks-0.1.108}/django_bulk_hooks/priority.py +0 -0
- {django_bulk_hooks-0.1.106 → django_bulk_hooks-0.1.108}/django_bulk_hooks/queryset.py +0 -0
- {django_bulk_hooks-0.1.106 → django_bulk_hooks-0.1.108}/django_bulk_hooks/registry.py +0 -0
|
@@ -42,10 +42,13 @@ class BulkHookManager(models.Manager):
|
|
|
42
42
|
"""
|
|
43
43
|
base_model = model_cls
|
|
44
44
|
while base_model._meta.parents:
|
|
45
|
-
parent
|
|
46
|
-
|
|
47
|
-
|
|
45
|
+
# Get the first non-abstract parent model
|
|
46
|
+
for parent_model in base_model._meta.parents.keys():
|
|
47
|
+
if not parent_model._meta.abstract:
|
|
48
|
+
base_model = parent_model
|
|
49
|
+
break
|
|
48
50
|
else:
|
|
51
|
+
# No non-abstract parents found, break the loop
|
|
49
52
|
break
|
|
50
53
|
return base_model
|
|
51
54
|
|
|
@@ -137,20 +140,32 @@ class BulkHookManager(models.Manager):
|
|
|
137
140
|
continue
|
|
138
141
|
|
|
139
142
|
# Handle multi-table inheritance
|
|
140
|
-
# Step 1: Bulk create base objects
|
|
143
|
+
# Step 1: Bulk create base objects with hooks
|
|
141
144
|
base_objects = self._extract_base_objects(class_objects, obj_class)
|
|
142
|
-
|
|
145
|
+
|
|
146
|
+
# Use the model's manager with hooks
|
|
147
|
+
base_model = self._get_base_model(obj_class)
|
|
148
|
+
if hasattr(base_model.objects, 'bulk_create'):
|
|
149
|
+
# Use the base model's manager with hooks
|
|
150
|
+
created_base = base_model.objects.bulk_create(base_objects, **kwargs)
|
|
151
|
+
else:
|
|
152
|
+
# Fallback to _base_manager
|
|
153
|
+
created_base = base_model._base_manager.bulk_create(base_objects, **kwargs)
|
|
143
154
|
|
|
144
155
|
# Step 2: Update original objects with base IDs
|
|
145
156
|
for obj, base_obj in zip(class_objects, created_base):
|
|
146
157
|
obj.pk = base_obj.pk
|
|
147
158
|
obj._state.adding = False
|
|
148
159
|
|
|
149
|
-
# Step 3: Bulk create child objects
|
|
160
|
+
# Step 3: Bulk create child objects with hooks
|
|
150
161
|
child_objects = self._extract_child_objects(class_objects, obj_class)
|
|
151
162
|
if child_objects:
|
|
152
|
-
# Use
|
|
153
|
-
obj_class.
|
|
163
|
+
# Use the model's manager with hooks
|
|
164
|
+
if hasattr(obj_class.objects, 'bulk_create'):
|
|
165
|
+
obj_class.objects.bulk_create(child_objects, **kwargs)
|
|
166
|
+
else:
|
|
167
|
+
# Fallback to _base_manager
|
|
168
|
+
obj_class._base_manager.bulk_create(child_objects, **kwargs)
|
|
154
169
|
|
|
155
170
|
result.extend(class_objects)
|
|
156
171
|
|
|
@@ -160,6 +175,8 @@ class BulkHookManager(models.Manager):
|
|
|
160
175
|
logger = logging.getLogger(__name__)
|
|
161
176
|
logger.error(f"Error in _bulk_create_inherited for {obj_class}: {e}")
|
|
162
177
|
logger.error(f"Model fields: {[f.name for f in obj_class._meta.fields]}")
|
|
178
|
+
logger.error(f"Base model: {self._get_base_model(obj_class)}")
|
|
179
|
+
logger.error(f"Base model manager: {self._get_base_model(obj_class).objects}")
|
|
163
180
|
raise
|
|
164
181
|
|
|
165
182
|
return result
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "django-bulk-hooks"
|
|
3
|
-
version = "0.1.
|
|
3
|
+
version = "0.1.108"
|
|
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
|