コード例 #1
0
ファイル: tag.py プロジェクト: pythonchelle/catsnap
    def get_image_data(cls, tag_names):
        from catsnap.table.image import Image
        from catsnap.table.image_tag import ImageTag
        session = Client().session()
        image_data = session.query(func.max(Image.filename),
                                   Image.image_id,
                                   func.max(Image.title),
                                   func.array_agg(Tag.name)).\
                join(ImageTag).\
                filter(ImageTag.image_id == Image.image_id).\
                filter(ImageTag.tag_id == Tag.tag_id).\
                filter(Image.image_id.in_(
                    session.query(ImageTag.image_id).\
                            join(Tag).\
                            filter(ImageTag.tag_id == Tag.tag_id).\
                            filter(Tag.name.in_(tag_names)))).\
                group_by(Image.image_id).\
                order_by(Image.filename)

        for image_struct in image_data:
            caption = Image.make_caption(title=image_struct[2],
                filename=image_struct[0],
                tags=image_struct[3])
            yield (image_struct[0], image_struct[1], caption)