minor fixes and updates
All checks were successful
Build Docs / changes (push) Successful in 5s
Build Docs / build-docs (push) Has been skipped
Build Docs / deploy-docs (push) Has been skipped

This commit is contained in:
Alexander Kalinovsky
2025-03-19 14:46:23 +07:00
parent f0db2b2830
commit fe0380f9f3
6 changed files with 53 additions and 50 deletions

View File

@@ -67,14 +67,31 @@ class BotEntityMetaclass(SQLModelMetaclass):
descriptor_kwargs = attribute_value.__dict__.copy()
sm_descriptor = descriptor_kwargs.pop("sm_descriptor", None) # type: FieldInfo
if attribute_value.default is not None:
if sm_descriptor:
if (
sm_descriptor
attribute_value.default is not None
and sm_descriptor.default is PydanticUndefined
):
sm_descriptor.default = attribute_value.default
else:
sm_descriptor = Field(default=attribute_value.default)
if (
attribute_value.default_factory is not None
and sm_descriptor.default_factory is PydanticUndefined
):
sm_descriptor.default_factory = (
attribute_value.default_factory
)
else:
if (
attribute_value.default is not None
or attribute_value.default_factory is not None
):
sm_descriptor = Field()
if attribute_value.default is not None:
sm_descriptor.default = attribute_value.default
if attribute_value.default_factory is not None:
sm_descriptor.default_factory = (
attribute_value.default_factory
)
if sm_descriptor:
namespace[annotation] = sm_descriptor
@@ -167,23 +184,6 @@ class BotEntityMetaclass(SQLModelMetaclass):
fields_descriptors=bot_fields_descriptors,
)
# descriptor_fields_sequence = [
# key
# for key, val in bot_fields_descriptors.items()
# if not (val.is_optional or val.name == "id" or val.name[:-3] == "_id")
# ]
# entity_descriptor: EntityDescriptor = namespace["bot_entity_descriptor"]
# if entity_descriptor.default_form.edit_field_sequence is None:
# entity_descriptor.default_form.edit_field_sequence = (
# descriptor_fields_sequence
# )
# for form in entity_descriptor.forms.values():
# if form.edit_field_sequence is None:
# form.edit_field_sequence = descriptor_fields_sequence
for field_descriptor in bot_fields_descriptors.values():
field_descriptor.entity_descriptor = namespace["bot_entity_descriptor"]

View File

@@ -102,6 +102,7 @@ class _BaseFieldDescriptor:
ep_child_field: str | None = None
dt_type: Literal["date", "datetime"] = "date"
default: Any = None
default_factory: Callable[[], Any] | None = None
@dataclass(kw_only=True)

View File

@@ -227,7 +227,9 @@ class Settings(metaclass=SettingsMetaclass):
)
return (
param.default
param.default_factory()
if param.default_factory
else param.default
if param.default
else (
[]
@@ -249,7 +251,6 @@ class Settings(metaclass=SettingsMetaclass):
session=session,
type_=setting.type_,
value=db_setting.value,
default=setting.default,
)
cls._loaded = True