From db7ac905b2d28d2a9e081f61e0cd97e2da6f816b Mon Sep 17 00:00:00 2001 From: collerek Date: Fri, 26 Mar 2021 10:24:56 +0100 Subject: [PATCH] optimize __getattribute__ access --- ormar/__init__.py | 2 +- ormar/models/newbasemodel.py | 8 ++++++-- ormar/models/quick_access_views.py | 8 ++++++++ 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/ormar/__init__.py b/ormar/__init__.py index 2e8ae3f..e05928b 100644 --- a/ormar/__init__.py +++ b/ormar/__init__.py @@ -75,7 +75,7 @@ class UndefinedType: # pragma no cover Undefined = UndefinedType() -__version__ = "0.10.1" +__version__ = "0.10.2" __all__ = [ "Integer", "BigInteger", diff --git a/ormar/models/newbasemodel.py b/ormar/models/newbasemodel.py index 35c5c7c..919240f 100644 --- a/ormar/models/newbasemodel.py +++ b/ormar/models/newbasemodel.py @@ -267,9 +267,13 @@ class NewBaseModel(pydantic.BaseModel, ModelTableProxy, metaclass=ModelMetaclass if item == "pk": return object.__getattribute__(self, "__dict__").get(self.Meta.pkname, None) if item in object.__getattribute__(self, "extract_related_names")(): - return self._extract_related_model_instead_of_field(item) + return object.__getattribute__( + self, "_extract_related_model_instead_of_field" + )(item) if item in object.__getattribute__(self, "extract_through_names")(): - return self._extract_related_model_instead_of_field(item) + return object.__getattribute__( + self, "_extract_related_model_instead_of_field" + )(item) if item in object.__getattribute__(self, "Meta").property_fields: value = object.__getattribute__(self, item) return value() if callable(value) else value diff --git a/ormar/models/quick_access_views.py b/ormar/models/quick_access_views.py index dd4cb5a..0dfc835 100644 --- a/ormar/models/quick_access_views.py +++ b/ormar/models/quick_access_views.py @@ -14,6 +14,7 @@ quick_access_set = { "__json_encoder__", "__post_root_validators__", "__pre_root_validators__", + "__private_attributes__", "__same__", "_calculate_keys", "_choices_fields", @@ -26,8 +27,10 @@ quick_access_set = { "_extract_related_model_instead_of_field", "_get_related_not_excluded_fields", "_get_value", + "_init_private_attributes", "_is_conversion_to_json_needed", "_iter", + "_iterate_related_models", "_orm", "_orm_id", "_orm_saved", @@ -40,8 +43,10 @@ quick_access_set = { "delete", "dict", "extract_related_names", + "extract_related_fields", "extract_through_names", "update_from_dict", + "get_child", "get_column_alias", "get_column_name_from_alias", "get_filtered_names_to_extract", @@ -52,9 +57,11 @@ quick_access_set = { "json", "keys", "load", + "load_all", "pk_column", "pk_type", "populate_default_values", + "prepare_model_to_save", "remove", "resolve_relation_field", "resolve_relation_name", @@ -62,6 +69,7 @@ quick_access_set = { "save_related", "saved", "set_save_status", + "signals", "translate_aliases_to_columns", "translate_columns_to_aliases", "update",