Skip to content

Commit 9f4e83d

Browse files
author
Micheal Gendy
committed
improve readability
1 parent 592ebba commit 9f4e83d

File tree

1 file changed

+19
-25
lines changed

1 file changed

+19
-25
lines changed

orm/models.py

+19-25
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,6 @@
2222
"lte": "__le__",
2323
}
2424

25-
MODEL = typing.TypeVar("MODEL", bound="Model")
26-
2725

2826
def _update_auto_now_fields(values, fields):
2927
for key, value in fields.items():
@@ -468,38 +466,34 @@ async def update(self, **kwargs) -> None:
468466
await self.database.execute(expr)
469467

470468
async def bulk_update(
471-
self, objs: typing.List[MODEL], fields: typing.List[str]
469+
self, objs: typing.List["Model"], fields: typing.List[str]
472470
) -> None:
473471
fields = {
474472
key: field.validator
475473
for key, field in self.model_cls.fields.items()
476474
if key in fields
477475
}
478476
validator = typesystem.Schema(fields=fields)
477+
objs = [
478+
{
479+
key: _convert_value(value)
480+
for key, value in obj.__dict__.items()
481+
if key in fields
482+
}
483+
for obj in objs
484+
]
479485
new_objs = [
480-
_update_auto_now_fields(validator.validate(value), self.model_cls.fields)
481-
for value in [
482-
{
483-
key: _convert_value(value)
484-
for key, value in obj.__dict__.items()
485-
if key in fields
486-
}
487-
for obj in objs
488-
]
486+
_update_auto_now_fields(validator.validate(obj), self.model_cls.fields)
487+
for obj in objs
489488
]
490-
expr = (
491-
self.table.update()
492-
.where(
493-
getattr(self.table.c, self.pkname) == sqlalchemy.bindparam(self.pkname)
494-
)
495-
.values(
496-
{
497-
field: sqlalchemy.bindparam(field)
498-
for obj in new_objs
499-
for field in obj.keys()
500-
}
501-
)
502-
)
489+
pk_column = getattr(self.table.c, self.pkname)
490+
expr = self.table.update().where(pk_column == sqlalchemy.bindparam(self.pkname))
491+
kwargs = {
492+
field: sqlalchemy.bindparam(field)
493+
for obj in new_objs
494+
for field in obj.keys()
495+
}
496+
expr = expr.values(kwargs)
503497
pk_list = [{self.pkname: getattr(obj, self.pkname)} for obj in objs]
504498
joined_list = [{**pk, **value} for pk, value in zip(pk_list, new_objs)]
505499
await self.database.execute_many(str(expr), joined_list)

0 commit comments

Comments
 (0)