django-bulk-hooks 0.1.75__tar.gz → 0.1.76__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.75 → django_bulk_hooks-0.1.76}/PKG-INFO +1 -1
- {django_bulk_hooks-0.1.75 → django_bulk_hooks-0.1.76}/django_bulk_hooks/context.py +0 -10
- {django_bulk_hooks-0.1.75 → django_bulk_hooks-0.1.76}/django_bulk_hooks/manager.py +5 -15
- {django_bulk_hooks-0.1.75 → django_bulk_hooks-0.1.76}/django_bulk_hooks/queryset.py +2 -10
- {django_bulk_hooks-0.1.75 → django_bulk_hooks-0.1.76}/pyproject.toml +1 -1
- {django_bulk_hooks-0.1.75 → django_bulk_hooks-0.1.76}/LICENSE +0 -0
- {django_bulk_hooks-0.1.75 → django_bulk_hooks-0.1.76}/README.md +0 -0
- {django_bulk_hooks-0.1.75 → django_bulk_hooks-0.1.76}/django_bulk_hooks/__init__.py +0 -0
- {django_bulk_hooks-0.1.75 → django_bulk_hooks-0.1.76}/django_bulk_hooks/conditions.py +0 -0
- {django_bulk_hooks-0.1.75 → django_bulk_hooks-0.1.76}/django_bulk_hooks/constants.py +0 -0
- {django_bulk_hooks-0.1.75 → django_bulk_hooks-0.1.76}/django_bulk_hooks/decorators.py +0 -0
- {django_bulk_hooks-0.1.75 → django_bulk_hooks-0.1.76}/django_bulk_hooks/engine.py +0 -0
- {django_bulk_hooks-0.1.75 → django_bulk_hooks-0.1.76}/django_bulk_hooks/enums.py +0 -0
- {django_bulk_hooks-0.1.75 → django_bulk_hooks-0.1.76}/django_bulk_hooks/handler.py +0 -0
- {django_bulk_hooks-0.1.75 → django_bulk_hooks-0.1.76}/django_bulk_hooks/models.py +0 -0
- {django_bulk_hooks-0.1.75 → django_bulk_hooks-0.1.76}/django_bulk_hooks/priority.py +0 -0
- {django_bulk_hooks-0.1.75 → django_bulk_hooks-0.1.76}/django_bulk_hooks/registry.py +0 -0
|
@@ -10,16 +10,6 @@ def get_hook_queue():
|
|
|
10
10
|
return _hook_context.queue
|
|
11
11
|
|
|
12
12
|
|
|
13
|
-
def is_in_bulk_operation():
|
|
14
|
-
"""Check if we're currently in a bulk operation to prevent recursion."""
|
|
15
|
-
return getattr(_hook_context, "in_bulk_operation", False)
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
def set_bulk_operation_flag(value):
|
|
19
|
-
"""Set the bulk operation flag to prevent recursion."""
|
|
20
|
-
_hook_context.in_bulk_operation = value
|
|
21
|
-
|
|
22
|
-
|
|
23
13
|
class HookContext:
|
|
24
14
|
def __init__(self, model_cls, metadata=None):
|
|
25
15
|
self.model_cls = model_cls
|
|
@@ -12,7 +12,7 @@ from django_bulk_hooks.constants import (
|
|
|
12
12
|
VALIDATE_DELETE,
|
|
13
13
|
VALIDATE_UPDATE,
|
|
14
14
|
)
|
|
15
|
-
from django_bulk_hooks.context import HookContext
|
|
15
|
+
from django_bulk_hooks.context import HookContext
|
|
16
16
|
from django_bulk_hooks.queryset import HookQuerySet
|
|
17
17
|
|
|
18
18
|
|
|
@@ -37,20 +37,10 @@ class BulkHookManager(models.Manager):
|
|
|
37
37
|
)
|
|
38
38
|
|
|
39
39
|
if not bypass_hooks:
|
|
40
|
-
#
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
if hasattr(threading.current_thread(), "_hook_context"):
|
|
45
|
-
# We're in a recursive call - refetch current DB state
|
|
46
|
-
originals = list(
|
|
47
|
-
model_cls.objects.filter(pk__in=[obj.pk for obj in objs])
|
|
48
|
-
)
|
|
49
|
-
else:
|
|
50
|
-
# First call - use the passed originals
|
|
51
|
-
originals = list(
|
|
52
|
-
model_cls.objects.filter(pk__in=[obj.pk for obj in objs])
|
|
53
|
-
)
|
|
40
|
+
# Load originals for hook comparison
|
|
41
|
+
originals = list(
|
|
42
|
+
model_cls.objects.filter(pk__in=[obj.pk for obj in objs])
|
|
43
|
+
)
|
|
54
44
|
|
|
55
45
|
ctx = HookContext(model_cls)
|
|
56
46
|
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
from django.db import models, transaction
|
|
2
|
-
from django_bulk_hooks.context import is_in_bulk_operation
|
|
3
2
|
|
|
4
3
|
|
|
5
4
|
class HookQuerySet(models.QuerySet):
|
|
@@ -21,7 +20,6 @@ class HookQuerySet(models.QuerySet):
|
|
|
21
20
|
|
|
22
21
|
# Load originals for hook comparison
|
|
23
22
|
originals = list(model_cls.objects.filter(pk__in=pks))
|
|
24
|
-
originals_by_pk = {obj.pk: obj for obj in originals}
|
|
25
23
|
|
|
26
24
|
# Apply field updates to instances
|
|
27
25
|
for obj in instances:
|
|
@@ -36,14 +34,8 @@ class HookQuerySet(models.QuerySet):
|
|
|
36
34
|
engine.run(model_cls, "before_update", instances, originals, ctx=ctx)
|
|
37
35
|
|
|
38
36
|
# Use Django's built-in update logic directly
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
set_bulk_operation_flag(True)
|
|
42
|
-
try:
|
|
43
|
-
queryset = self.model.objects.filter(pk__in=pks)
|
|
44
|
-
update_count = queryset.update(**kwargs)
|
|
45
|
-
finally:
|
|
46
|
-
set_bulk_operation_flag(False)
|
|
37
|
+
queryset = self.model.objects.filter(pk__in=pks)
|
|
38
|
+
update_count = queryset.update(**kwargs)
|
|
47
39
|
|
|
48
40
|
# Run AFTER_UPDATE hooks
|
|
49
41
|
engine.run(model_cls, "after_update", instances, originals, ctx=ctx)
|
|
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
|