Esempio n. 1
0
def get_frame_appearances(*, frame_id, **_):
    with db.session_scope() as session:
        frame = session.query(models.Frame).get(frame_id)
        apps = frame.appearances
        app_dicts = [to_dict(a, rels=['appearance_labels']) for a in apps]
        frame_dict = to_dict(frame)
    return {'frame': frame_dict, 'appearances': app_dicts}
Esempio n. 2
0
def delete_appearance(*, appearance_id, **_):
    with db.session_scope() as session:
        app = session.query(models.Appearance).get(appearance_id)
        frame = app.frame
        session.delete(app)
        session.commit()
        app_dicts = [
            to_dict(a, rels=['appearance_labels']) for a in frame.appearances
        ]
        frame_dict = to_dict(frame)
    return {'frame': frame_dict, 'appearances': app_dicts}
Esempio n. 3
0
def change_frame(*, frame_id, collection_id, shift, **_):
    with db.session_scope() as session:
        if shift != 0:
            assert collection_id, 'Collection need to be defined when useing shift.'
            frame_id = db.navigate_frame(session, collection_id, frame_id,
                                         shift)
        frame = session.query(models.Frame).get(frame_id)
        apps = frame.appearances
        app_dicts = [to_dict(a, rels=['appearance_labels']) for a in apps]
        frame_dict = to_dict(frame)
    return {'frame': frame_dict, 'appearances': app_dicts}
Esempio n. 4
0
def add_collection(*, name, **_):
    with db.session_scope() as session:
        coll = models.Collection(name=name)
        session.add(coll)
        session.commit()
        coll = to_dict(coll)
    return {'collection': coll}
Esempio n. 5
0
def add_creator(*, name, **_):
    with db.session_scope() as session:
        creator = models.Creator(name=name)
        session.add(creator)
        session.commit()
        creator_dict = to_dict(creator)
    return {'creator': creator_dict}
Esempio n. 6
0
def update_box(*, appearance_id, box, **_):
    with db.session_scope() as session:
        app = session.query(models.Appearance).get(appearance_id)
        for k, v in box.items():
            setattr(app, k, v)
        session.commit()
        app_dict = to_dict(app)
    return {'appearance': app_dict}
Esempio n. 7
0
def delete_appearance_label(*, appearance_label_id, **_):
    with db.session_scope() as session:
        applabel = session.query(
            models.AppearanceLabel).get(appearance_label_id)
        app = applabel.appearance
        session.delete(applabel)
        session.commit()
        app_dicts = to_dict(app, rels=['appearance_labels'])
    return {'appearance': app_dicts}
Esempio n. 8
0
def add_appearance_label(*, appearance_id, label_id, creator_id, **_):
    with db.session_scope() as session:
        creator = session.query(models.Creator).get(creator_id)
        label = session.query(models.Label).get(label_id)
        appearance = session.query(models.Appearance).get(appearance_id)
        app_label = models.AppearanceLabel(creator=creator,
                                           appearance=appearance,
                                           label=label)
        session.add(app_label)
        session.commit()
        app_dict = to_dict(appearance, rels=['appearance_labels'])
    return {'appearance': app_dict}
Esempio n. 9
0
def add_appearance(*, frame_id, appearance, label_ids, creator_id, **_):
    with db.session_scope() as session:
        frame = session.query(models.Frame).get(frame_id)
        creator = session.query(models.Creator).get(creator_id)
        labels = session.query(models.Label).filter(
            models.Label.id.in_(label_ids)).all()
        app = models.Appearance(frame=frame, creator=creator, **appearance)
        session.add(app)
        for label in labels:
            appLabel = models.AppearanceLabel(creator=creator,
                                              appearance=app,
                                              label=label)
            session.add(appLabel)
        session.commit()
        app_dict = to_dict(app, rels=['appearance_labels'])
    return {'appearance': app_dict}
Esempio n. 10
0
def download_collection(*, collection_id=28, appearance_needed=True):
    with db.session_scope() as session:
        xs = []
        f = session.query(models.Frame).options(
                joinedload('appearances')
                .joinedload('appearance_labels')
                .joinedload('label')
            ).filter(models.Frame.collections.any(id=collection_id)) \
            .all()

        for frame in f:
            d = to_dict(frame,
                        rels=['appearances', 'appearance_labels', 'label'])

            if appearance_needed:
                include = len(d['appearances']) > 0
            else:
                include = True

            if include:
                xs.append(d)

        return {"collection": xs}