Skip to content

Commit 013ccca

Browse files
committed
Fixed UUID PK Mixin not creating primary key
1 parent eb18ce6 commit 013ccca

File tree

1 file changed

+19
-9
lines changed

1 file changed

+19
-9
lines changed
+19-9
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import uuid
2+
23
from .BaseScope import BaseScope
34

45

@@ -9,6 +10,9 @@ def on_boot(self, builder):
910
builder.set_global_scope(
1011
"_UUID_primary_key", self.set_uuid_create, action="insert"
1112
)
13+
builder.set_global_scope(
14+
"_UUID_primary_key", self.set_bulk_uuid_create, action="bulk_create"
15+
)
1216

1317
def on_remove(self, builder):
1418
pass
@@ -22,15 +26,21 @@ def generate_uuid(self, builder, uuid_version, bytes=False):
2226

2327
return uuid_func(*args).bytes if bytes else str(uuid_func(*args))
2428

29+
def build_uuid_pk(self, builder):
30+
uuid_version = getattr(builder._model, "__uuid_version__", 4)
31+
uuid_bytes = getattr(builder._model, "__uuid_bytes__", False)
32+
return {
33+
builder._model.__primary_key__: self.generate_uuid(
34+
builder, uuid_version, uuid_bytes
35+
)
36+
}
37+
2538
def set_uuid_create(self, builder):
2639
# if there is already a primary key, no need to set a new one
2740
if builder._model.__primary_key__ not in builder._creates:
28-
uuid_version = getattr(builder._model, "__uuid_version__", 4)
29-
uuid_bytes = getattr(builder._model, "__uuid_bytes__", False)
30-
builder._creates.update(
31-
{
32-
builder._model.__primary_key__: self.generate_uuid(
33-
builder, uuid_version, uuid_bytes
34-
)
35-
}
36-
)
41+
builder._creates.update(self.build_uuid_pk(builder))
42+
43+
def set_bulk_uuid_create(self, builder):
44+
for idx, create_atts in enumerate(builder._creates):
45+
if builder._model.__primary_key__ not in create_atts:
46+
builder._creates[idx].update(self.build_uuid_pk(builder))

0 commit comments

Comments
 (0)