include refimg_lnk and facefile_lnk into Face to be used in viewer

This commit is contained in:
2025-10-03 21:10:52 +10:00
parent efaec00127
commit cd73c16545

View File

@@ -183,6 +183,7 @@ class DirSchema(ma.SQLAlchemyAutoSchema):
class FaceFileLinkSchema(ma.SQLAlchemyAutoSchema):
class Meta: model = FaceFileLink
model_used = ma.auto_field()
load_instance = True
class PersonSchema(ma.SQLAlchemyAutoSchema):
@@ -206,6 +207,9 @@ class FaceSchema(ma.SQLAlchemyAutoSchema):
exclude = ('face',)
load_instance = True
refimg = ma.Nested(RefimgSchema,allow_none=True)
# faces have to come with a file connection
facefile_lnk = ma.Nested(FaceFileLinkSchema)
refimg_lnk = ma.Nested(FaceRefimgLinkSchema,allow_none=True)
class FileSchema(ma.SQLAlchemyAutoSchema):
class Meta: model = File
@@ -268,12 +272,14 @@ def process_ids():
stmt = (
select(Entry)
.options(
joinedload(Entry.file_details).joinedload(File.faces),
joinedload(Entry.file_details).joinedload(File.faces).joinedload(Face.refimg).joinedload(Refimg.person)
joinedload(Entry.file_details).joinedload(File.faces).joinedload(Face.refimg).joinedload(Refimg.person),
joinedload(Entry.file_details).joinedload(File.faces).joinedload(Face.refimg_lnk),
joinedload(Entry.file_details).joinedload(File.faces).joinedload(Face.facefile_lnk),
)
.where(Entry.id.in_(ids))
)
# unique as the ORM query returns a Cartesian product for the joins. E.g if file has 3 faces, the result has 3 rows of the same entry and file data, but different face data
data=db.session.execute(stmt).unique().scalars().all()