django-bulk-hooks 0.1.151__py3-none-any.whl → 0.1.153__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.
- django_bulk_hooks/queryset.py +21 -15
- {django_bulk_hooks-0.1.151.dist-info → django_bulk_hooks-0.1.153.dist-info}/METADATA +1 -1
- {django_bulk_hooks-0.1.151.dist-info → django_bulk_hooks-0.1.153.dist-info}/RECORD +5 -5
- {django_bulk_hooks-0.1.151.dist-info → django_bulk_hooks-0.1.153.dist-info}/LICENSE +0 -0
- {django_bulk_hooks-0.1.151.dist-info → django_bulk_hooks-0.1.153.dist-info}/WHEEL +0 -0
django_bulk_hooks/queryset.py
CHANGED
|
@@ -120,26 +120,28 @@ class HookQuerySet(models.QuerySet):
|
|
|
120
120
|
# For MTI models, we need to handle them specially
|
|
121
121
|
if is_mti:
|
|
122
122
|
# Use our MTI-specific logic
|
|
123
|
+
# Filter out custom parameters that Django's bulk_create doesn't accept
|
|
124
|
+
mti_kwargs = {
|
|
125
|
+
'batch_size': batch_size,
|
|
126
|
+
'ignore_conflicts': ignore_conflicts,
|
|
127
|
+
'update_conflicts': update_conflicts,
|
|
128
|
+
'update_fields': update_fields,
|
|
129
|
+
'unique_fields': unique_fields,
|
|
130
|
+
}
|
|
131
|
+
# Remove custom hook kwargs if present in self.bulk_create signature
|
|
123
132
|
result = self._mti_bulk_create(
|
|
124
133
|
objs,
|
|
125
|
-
|
|
126
|
-
ignore_conflicts=ignore_conflicts,
|
|
127
|
-
update_conflicts=update_conflicts,
|
|
128
|
-
update_fields=update_fields,
|
|
129
|
-
unique_fields=unique_fields,
|
|
134
|
+
**{k: v for k, v in mti_kwargs.items() if k not in ['bypass_hooks', 'bypass_validation']}
|
|
130
135
|
)
|
|
131
136
|
else:
|
|
132
137
|
# For single-table models, use Django's built-in bulk_create
|
|
133
138
|
# but we need to call it on the base manager to avoid recursion
|
|
134
139
|
# Filter out custom parameters that Django's bulk_create doesn't accept
|
|
135
140
|
|
|
136
|
-
# Use Django's original
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
original_manager.model = model_cls
|
|
141
|
-
original_manager._db = self.db
|
|
142
|
-
result = original_manager.bulk_create(
|
|
141
|
+
# Use Django's original QuerySet to avoid recursive calls
|
|
142
|
+
from django.db.models import QuerySet
|
|
143
|
+
original_qs = QuerySet(model_cls, using=self.db)
|
|
144
|
+
result = original_qs.bulk_create(
|
|
143
145
|
objs,
|
|
144
146
|
batch_size=batch_size,
|
|
145
147
|
ignore_conflicts=ignore_conflicts,
|
|
@@ -196,7 +198,9 @@ class HookQuerySet(models.QuerySet):
|
|
|
196
198
|
chunk = objs[i : i + self.CHUNK_SIZE]
|
|
197
199
|
|
|
198
200
|
# Call the base implementation to avoid re-triggering this method
|
|
199
|
-
|
|
201
|
+
# Filter out custom parameters that Django's bulk_update doesn't accept
|
|
202
|
+
django_kwargs = {k: v for k, v in kwargs.items() if k not in ['bypass_hooks', 'bypass_validation']}
|
|
203
|
+
super().bulk_update(chunk, fields, **django_kwargs)
|
|
200
204
|
|
|
201
205
|
if not bypass_hooks:
|
|
202
206
|
engine.run(model_cls, AFTER_UPDATE, objs, originals, ctx=ctx)
|
|
@@ -301,6 +305,8 @@ class HookQuerySet(models.QuerySet):
|
|
|
301
305
|
then single bulk insert into childmost table.
|
|
302
306
|
Sets auto_now_add/auto_now fields for each model in the chain.
|
|
303
307
|
"""
|
|
308
|
+
# Remove custom hook kwargs before passing to Django internals
|
|
309
|
+
django_kwargs = {k: v for k, v in kwargs.items() if k not in ['bypass_hooks', 'bypass_validation']}
|
|
304
310
|
if inheritance_chain is None:
|
|
305
311
|
inheritance_chain = self._get_inheritance_chain()
|
|
306
312
|
|
|
@@ -310,13 +316,13 @@ class HookQuerySet(models.QuerySet):
|
|
|
310
316
|
"Inheritance chain too deep - possible infinite recursion detected"
|
|
311
317
|
)
|
|
312
318
|
|
|
313
|
-
batch_size =
|
|
319
|
+
batch_size = django_kwargs.get("batch_size") or len(objs)
|
|
314
320
|
created_objects = []
|
|
315
321
|
with transaction.atomic(using=self.db, savepoint=False):
|
|
316
322
|
for i in range(0, len(objs), batch_size):
|
|
317
323
|
batch = objs[i : i + batch_size]
|
|
318
324
|
batch_result = self._process_mti_batch(
|
|
319
|
-
batch, inheritance_chain, **
|
|
325
|
+
batch, inheritance_chain, **django_kwargs
|
|
320
326
|
)
|
|
321
327
|
created_objects.extend(batch_result)
|
|
322
328
|
return created_objects
|
|
@@ -9,9 +9,9 @@ django_bulk_hooks/handler.py,sha256=xZt8iNdYF-ACz-MnKMY0co6scWINU5V5wC1lyDn844k,
|
|
|
9
9
|
django_bulk_hooks/manager.py,sha256=r54ct3S6AcqME2OsX-jPF944CEKcoSIW3qiAx_NwUaw,2801
|
|
10
10
|
django_bulk_hooks/models.py,sha256=5PBjBoGlHwAE5b4yaZ5kDjt5UtHfQp6pDrwB2XPs2tk,3850
|
|
11
11
|
django_bulk_hooks/priority.py,sha256=HG_2D35nga68lBCZmSXTcplXrjFoRgZFRDOy4ROKonY,376
|
|
12
|
-
django_bulk_hooks/queryset.py,sha256=
|
|
12
|
+
django_bulk_hooks/queryset.py,sha256=gs7Ge5AoyVc6mea-jebedUNfwmM75zIpu1s6bO5qC7U,22903
|
|
13
13
|
django_bulk_hooks/registry.py,sha256=-mQBizJ06nz_tajZBinViKx_uP2Tbc1tIpTEMv7lwKA,705
|
|
14
|
-
django_bulk_hooks-0.1.
|
|
15
|
-
django_bulk_hooks-0.1.
|
|
16
|
-
django_bulk_hooks-0.1.
|
|
17
|
-
django_bulk_hooks-0.1.
|
|
14
|
+
django_bulk_hooks-0.1.153.dist-info/LICENSE,sha256=dguKIcbDGeZD-vXWdLyErPUALYOvtX_fO4Zjhq481uk,1088
|
|
15
|
+
django_bulk_hooks-0.1.153.dist-info/METADATA,sha256=Up1df98LtKaSSn6LEAzB3S38YFRMGxSXHK-_0c5sfY4,6951
|
|
16
|
+
django_bulk_hooks-0.1.153.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
|
|
17
|
+
django_bulk_hooks-0.1.153.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|