roundabout,
created on Tuesday, 24 September 2024, 14:43:11 (1727188991),
received on Thursday, 26 September 2024, 08:09:39 (1727338179)
Author identity: vlad <vlad.muntoiu@gmail.com>
96d15a4b7ce80236cad8e63d71e0a2b91ead1d6f
app.py
@@ -174,9 +174,12 @@ with app.app_context():
foreign_keys=[PictureObjectInheritance.child_id], back_populates="child") def __init__(self, id, description):def __init__(self, id, description, parents):self.id = id self.description = description if parents: for parent in parents: db.session.add(PictureObjectInheritance(parent, self))class PictureRegion(db.Model):
@@ -1140,9 +1143,28 @@ class APIError(Exception):
def get_picture_query(query_data): query = db.session.query(PictureResource) descendants_cte = ( db.select(PictureObject.id) .where(PictureObject.id == PictureRegion.object_id) .cte(name="descendants_cte", recursive=True) ) descendants_cte = descendants_cte.union_all( db.select(PictureObjectInheritance.child_id) .where(PictureObjectInheritance.parent_id == descendants_cte.c.id) ) requirement_conditions = { # Has an object with the ID in the given list"has_object": lambda value: PictureResource.regions.any( PictureRegion.object_id.in_(value)), # Has an object with the ID in the given list, or a subtype of it "has": lambda value: PictureResource.regions.any( PictureRegion.object_id.in_( db.select(descendants_cte.c.id) ) ),"nature": lambda value: PictureResource.nature_id.in_(value), "licence": lambda value: PictureResource.licences.any( PictureLicence.licence_id.in_(value)),