django-bulk-hooks 0.1.64__py3-none-any.whl → 0.1.66__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/manager.py +15 -15
- {django_bulk_hooks-0.1.64.dist-info → django_bulk_hooks-0.1.66.dist-info}/METADATA +1 -1
- {django_bulk_hooks-0.1.64.dist-info → django_bulk_hooks-0.1.66.dist-info}/RECORD +5 -5
- {django_bulk_hooks-0.1.64.dist-info → django_bulk_hooks-0.1.66.dist-info}/LICENSE +0 -0
- {django_bulk_hooks-0.1.64.dist-info → django_bulk_hooks-0.1.66.dist-info}/WHEEL +0 -0
django_bulk_hooks/manager.py
CHANGED
|
@@ -37,7 +37,7 @@ class BulkLifecycleManager(models.Manager):
|
|
|
37
37
|
originals = list(model_cls.objects.filter(pk__in=[obj.pk for obj in objs]))
|
|
38
38
|
ctx = TriggerContext(model_cls)
|
|
39
39
|
engine.run(model_cls, BEFORE_UPDATE, objs, originals, ctx=ctx)
|
|
40
|
-
|
|
40
|
+
|
|
41
41
|
# Automatically detect fields that were modified during BEFORE_UPDATE hooks
|
|
42
42
|
modified_fields = self._detect_modified_fields(objs, originals)
|
|
43
43
|
if modified_fields:
|
|
@@ -47,7 +47,7 @@ class BulkLifecycleManager(models.Manager):
|
|
|
47
47
|
fields = list(fields_set)
|
|
48
48
|
logger.info(
|
|
49
49
|
"Automatically including modified fields in bulk_update: %s",
|
|
50
|
-
modified_fields
|
|
50
|
+
modified_fields,
|
|
51
51
|
)
|
|
52
52
|
|
|
53
53
|
for i in range(0, len(objs), self.CHUNK_SIZE):
|
|
@@ -67,28 +67,28 @@ class BulkLifecycleManager(models.Manager):
|
|
|
67
67
|
"""
|
|
68
68
|
if not original_instances:
|
|
69
69
|
return set()
|
|
70
|
-
|
|
70
|
+
|
|
71
71
|
# Create a mapping of pk to original instance for efficient lookup
|
|
72
72
|
original_map = {obj.pk: obj for obj in original_instances if obj.pk is not None}
|
|
73
|
-
|
|
73
|
+
|
|
74
74
|
modified_fields = set()
|
|
75
|
-
|
|
75
|
+
|
|
76
76
|
for new_instance in new_instances:
|
|
77
77
|
if new_instance.pk is None:
|
|
78
78
|
continue
|
|
79
|
-
|
|
79
|
+
|
|
80
80
|
original = original_map.get(new_instance.pk)
|
|
81
81
|
if not original:
|
|
82
82
|
continue
|
|
83
|
-
|
|
83
|
+
|
|
84
84
|
# Compare all fields to detect changes
|
|
85
85
|
for field in new_instance._meta.fields:
|
|
86
|
-
if field.name ==
|
|
86
|
+
if field.name == "id":
|
|
87
87
|
continue
|
|
88
|
-
|
|
88
|
+
|
|
89
89
|
new_value = getattr(new_instance, field.name)
|
|
90
90
|
original_value = getattr(original, field.name)
|
|
91
|
-
|
|
91
|
+
|
|
92
92
|
# Handle different field types appropriately
|
|
93
93
|
if field.is_relation:
|
|
94
94
|
# For foreign keys, compare the pk values
|
|
@@ -100,7 +100,7 @@ class BulkLifecycleManager(models.Manager):
|
|
|
100
100
|
# For regular fields, use direct comparison
|
|
101
101
|
if new_value != original_value:
|
|
102
102
|
modified_fields.add(field.name)
|
|
103
|
-
|
|
103
|
+
|
|
104
104
|
return modified_fields
|
|
105
105
|
|
|
106
106
|
@transaction.atomic
|
|
@@ -120,9 +120,7 @@ class BulkLifecycleManager(models.Manager):
|
|
|
120
120
|
|
|
121
121
|
for i in range(0, len(objs), self.CHUNK_SIZE):
|
|
122
122
|
chunk = objs[i : i + self.CHUNK_SIZE]
|
|
123
|
-
result.extend(
|
|
124
|
-
super(models.Manager, self).bulk_create(chunk, **kwargs)
|
|
125
|
-
)
|
|
123
|
+
result.extend(super(models.Manager, self).bulk_create(chunk, **kwargs))
|
|
126
124
|
|
|
127
125
|
if not bypass_hooks:
|
|
128
126
|
engine.run(model_cls, AFTER_CREATE, result, ctx=ctx)
|
|
@@ -144,12 +142,14 @@ class BulkLifecycleManager(models.Manager):
|
|
|
144
142
|
ctx = TriggerContext(model_cls)
|
|
145
143
|
|
|
146
144
|
if not bypass_hooks:
|
|
145
|
+
logger.debug("Executing BEFORE_DELETE hooks for %s", model_cls.__name__)
|
|
147
146
|
engine.run(model_cls, BEFORE_DELETE, objs, ctx=ctx)
|
|
148
147
|
|
|
149
148
|
pks = [obj.pk for obj in objs if obj.pk is not None]
|
|
150
149
|
model_cls.objects.filter(pk__in=pks).delete()
|
|
151
150
|
|
|
152
151
|
if not bypass_hooks:
|
|
152
|
+
logger.debug("Executing AFTER_DELETE hooks for %s", model_cls.__name__)
|
|
153
153
|
engine.run(model_cls, AFTER_DELETE, objs, ctx=ctx)
|
|
154
154
|
|
|
155
155
|
return objs
|
|
@@ -170,7 +170,7 @@ class BulkLifecycleManager(models.Manager):
|
|
|
170
170
|
objs = list(self.all())
|
|
171
171
|
if not objs:
|
|
172
172
|
return 0
|
|
173
|
-
self.
|
|
173
|
+
self.bulk_delete(objs)
|
|
174
174
|
return len(objs)
|
|
175
175
|
|
|
176
176
|
@transaction.atomic
|
|
@@ -6,12 +6,12 @@ django_bulk_hooks/decorators.py,sha256=tckDcxtOzKCbgvS9QydgeIAWTFDEl-ch3_Q--ruEG
|
|
|
6
6
|
django_bulk_hooks/engine.py,sha256=VZJiESt-QSeppnDDsqiJbnDVAc0EBa6fH7Ywr9sT2Qs,2004
|
|
7
7
|
django_bulk_hooks/enums.py,sha256=Zo8_tJzuzZ2IKfVc7gZ-0tWPT8q1QhqZbAyoh9ZVJbs,381
|
|
8
8
|
django_bulk_hooks/handler.py,sha256=qUulFSPhi__gWHISC4GogeVQ9aDo45bz0Dj421Y6skE,4968
|
|
9
|
-
django_bulk_hooks/manager.py,sha256=
|
|
9
|
+
django_bulk_hooks/manager.py,sha256=0vnrfz0oYrtARvFzWr8hBUx2688ECNuj0CpixlsCqBM,6522
|
|
10
10
|
django_bulk_hooks/models.py,sha256=_cqIVHKhXb1EOnXxhsuJUlLnPjTRM_sCP5OKbq4q-I8,542
|
|
11
11
|
django_bulk_hooks/priority.py,sha256=HG_2D35nga68lBCZmSXTcplXrjFoRgZFRDOy4ROKonY,376
|
|
12
12
|
django_bulk_hooks/queryset.py,sha256=YG9wlvOdujapmxzNhOXTO74Uph0sozUsfc8e5n9KniU,1409
|
|
13
13
|
django_bulk_hooks/registry.py,sha256=eFe6U6kUm3ecBVqKtvF-Zh16k3KZVsUEOoTj0axoPl8,1088
|
|
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.66.dist-info/LICENSE,sha256=dguKIcbDGeZD-vXWdLyErPUALYOvtX_fO4Zjhq481uk,1088
|
|
15
|
+
django_bulk_hooks-0.1.66.dist-info/METADATA,sha256=NyHujXArUIsO_ZC_pXzxkd3CKAM_A60p9Rguhy6eJQc,3113
|
|
16
|
+
django_bulk_hooks-0.1.66.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
|
|
17
|
+
django_bulk_hooks-0.1.66.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|