def index_references(cls, document_id): """Helper function to get reference data for indexing.""" # cf. aleph.index.entities.generate_entities() from aleph.model.entity import Entity, collection_entity_table cet = collection_entity_table.alias() q = db.session.query(Reference.entity_id, cet.c.collection_id) q = q.filter(cet.c.entity_id == Reference.entity_id) q = q.filter(Reference.document_id == document_id) q = q.filter(Entity.id == Reference.entity_id) q = q.filter(Entity.state == Entity.STATE_ACTIVE) return q.all()
def index_references(cls, document_id): """Helper function to get reference data for indexing.""" # cf. aleph.index.entities.generate_entities() from aleph.model.entity import Entity, collection_entity_table cet = collection_entity_table.alias() q = db.session.query(Reference.entity_id, cet.c.collection_id) q = q.filter(cet.c.entity_id == Reference.entity_id) q = q.filter(Reference.document_id == document_id) q = q.filter(Entity.id == Reference.entity_id) q = q.filter(Entity.state == Entity.STATE_ACTIVE) return q.all()
def filters(cls, q, start_collection, start_entity_id=None, end_collection_id=[], labels=[], types=[]): if start_entity_id is not None: q = q.filter(cls.start_entity_id == start_entity_id) else: cet = collection_entity_table.alias() q = q.join(cet, cet.c.entity_id == cls.start_entity_id) q = q.filter(cet.c.collection_id == start_collection.id) q = q.filter(cls.end_collection_id.overlap(end_collection_id)) pred = not_(cls.end_collection_id.contains([start_collection.id])) q = q.filter(pred) if len(labels): labels = cast(labels, ARRAY(db.Unicode())) q = q.filter(cls.labels.contained_by(labels)) if len(types): types = cast(types, ARRAY(db.Unicode())) q = q.filter(cls.types.contained_by(types)) return q