Skip to content
Snippets Groups Projects
Commit 17967563 authored by Simon Künzel's avatar Simon Künzel
Browse files

Fix object's super classes

parent 7281ce67
No related branches found
No related tags found
No related merge requests found
......@@ -140,6 +140,8 @@ class ApiObjectClass:
raise Exception(f"Class '{self.orm_class.__name__}' has unknown variant '{base_variant_id}'")
def _post_init_variant_fields(self, all_classes: dict[str, "ApiObjectClass"]):
variant_ignore_classes = set(recursive_flat_map_single(lambda c: c.__bases__, self.orm_class))
for sub_class in self.orm_class.__subclasses__():
if not hasattr(sub_class, "__all_class_api_fields__"):
continue
......@@ -153,13 +155,16 @@ class ApiObjectClass:
f"'{self._variant_field.enum_class.__name__}'")
# noinspection PyUnresolvedReferences
for sub_field in sub_class.__all_class_api_fields__:
for super_sub_class in set(recursive_flat_map_single(lambda c: c.__bases__, sub_class)) - variant_ignore_classes:
if not hasattr(super_sub_class, "__all_class_api_fields__"):
continue
for sub_field in super_sub_class.__all_class_api_fields__:
assert isinstance(sub_field, ApiField)
try:
self._add_field(all_classes, sub_field, sub_class, variant_id)
except Exception as e:
raise Exception(
f"While initializing field for member '{sub_field.member_name}' in class '{sub_class.__name__}'") from e
f"While initializing field for member '{sub_field.member_name}' in class '{super_sub_class.__name__}'") from e
for sub2_class in filter(
lambda c: hasattr(c, "__all_class_api_fields__"),
......
......@@ -286,7 +286,7 @@ class PlainAudioTargetMedium(TargetMedium, FileMedium, SingleAudioContainingMedi
)
class ThumbnailTargetMedium(FileMedium):
class ThumbnailTargetMedium(TargetMedium, FileMedium):
__tablename__ = None # Prevent our own base from adding a table name. This should be a single-table inheritance
__mapper_args__ = {
"polymorphic_identity": TargetMediumType.THUMBNAIL
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment