Queryset mixins (#629)

* add enum field

* add decorator for asyncio

* fix enum typing, additional tests, add docs

* add more tests

* query-mixin

* use dict to replace ordereddict

Co-authored-by: collerek <collerek@gmail.com>
This commit is contained in:
Ethon
2022-05-07 20:02:30 +08:00
committed by GitHub
parent 11bf6d30c4
commit 6e2a2ad129
13 changed files with 33 additions and 25 deletions

View File

@ -1,4 +1,3 @@
import collections
import itertools
import sqlite3
from typing import Any, Dict, List, TYPE_CHECKING, Tuple, Type
@ -145,7 +144,7 @@ def extract_annotations_and_default_vals(attrs: Dict) -> Tuple[Dict, Dict]:
return attrs, model_fields
def group_related_list(list_: List) -> collections.OrderedDict:
def group_related_list(list_: List) -> Dict:
"""
Translates the list of related strings into a dictionary.
That way nested models are grouped to traverse them in a right order
@ -174,9 +173,7 @@ def group_related_list(list_: List) -> collections.OrderedDict:
result_dict[key] = group_related_list(new)
else:
result_dict.setdefault(key, []).extend(new)
return collections.OrderedDict(
sorted(result_dict.items(), key=lambda item: len(item[1]))
)
return dict(sorted(result_dict.items(), key=lambda item: len(item[1])))
def meta_field_not_set(model: Type["Model"], field_name: str) -> bool:

View File

@ -1,4 +1,3 @@
from collections import OrderedDict
from typing import Dict, List, Optional, TYPE_CHECKING, cast
import ormar
@ -32,7 +31,7 @@ class MergeModelMixin:
:rtype: List["Model"]
"""
merged_rows: List["Model"] = []
grouped_instances: OrderedDict = OrderedDict()
grouped_instances: Dict = {}
for model in result_rows:
grouped_instances.setdefault(model.pk, []).append(model)