Example #1
0
def fetch_witnesses(ismi_id):
    """ Fetches witnesses for a given ISMI ID """
    rel = []
    codex = api.fetch('get_ent', include_content="true", id=ismi_id)
    if not codex:
        return None
    codex_data = codex.get('ent', None)
    target_relations = codex_data.get('tar_rels', None)
    if target_relations:
        related_objects = [r for r in target_relations if r['name'] == 'is_part_of']
        for wit in related_objects:
            witness = api.fetch('get_ent', include_content="true", id=wit['src_id'])
            rel.append(witness.get('ent', None))
    return rel
Example #2
0
def fetch_people(text_id):
    rel = []
    text = api.fetch('get_ent', include_content="true", id=text_id)

    if not text:
        return None

    text_data = text.get('ent', None)
    target_relations = text_data.get('src_rels', None)
    if target_relations:
        related_objects = [r for r in target_relations if r['tar_oc'] == "PERSON"]
        for pers in related_objects:
            person = api.fetch('get_ent', include_content="true", id=pers['tar_id'])
            rel.append(person.get('ent', None))
    return rel
Example #3
0
def fetch_texts(witness_id):
    # fetches texts for a given witness_id
    rel = []
    witness = api.fetch("get_ent", include_content="true", id=witness_id)
    if not witness:
        return None

    witness_data = witness.get("ent", None)
    source_relations = witness_data.get("src_rels", None)

    if source_relations:
        related_objects = [r for r in source_relations if r["tar_oc"] == "TEXT"]
        for text in related_objects:
            text = api.fetch("get_ent", include_content="true", id=text["tar_id"])
            rel.append(text.get("ent", None))
    return rel
def fetch_manuscripts():
    r = api.fetch("get_ents", oc="CODEX")
    entities = r.get('ents', None)

    for entity in entities:
        if entity.get('ov', None):
            entity_name = parse.name(entity.get('ov'))
            entity_id = int(entity.get('id'))
            directory = os.path.join(settings.IMG_DIR, entity_name)
            ms = Manuscript.objects.filter(directory=directory)
            if ms.exists():
                print("Matching {0} with {1} ID {2}".format(ms[0].directory, entity_name, entity_id))
                ms.update(ismi_id=entity_id)
            else:
                print("Entry for {0} not found.".format(entity_name))
Example #5
0
def fetch_entity(entity_id):
    print("Fetching {0}".format(entity_id))
    ent_ = api.fetch('get_ent', include_content="true", id=entity_id)
    # ms_ is of type CODEX
    if not ent_.get('ent', None):
        return None

    if not ent_['ent'].get('oc', None):
        print("No type! Returning.")
        return None

    db_ent, created = get_model('imageserve', 'ISMIEntity').objects.get_or_create(ismi_id=entity_id)
    if db_ent.synced:
        return None

    print("Creating relationship with ms obj")
    db_ent.synced = True
    db_ent.data=ent_['ent']
    db_ent.ismi_type = ent_['ent']['oc']
    db_ent.save()

    print("Getting other relationships")
    if not ent_['ent'].get('tar_rels', None):
        return None

    tar_rels = ent_['ent']['tar_rels']

    print("Getting target relationships")
    for rel in tar_rels:
        if not rel.get('src_id', None):
            continue
        if not rel.get('src_oc', None):
            continue

        db_ent, created = get_model('imageserve', 'ISMIEntity').objects.get_or_create(ismi_id=rel.get('src_id'))
        if not created:
            continue

        db_ent.synced = False
        db_ent.ismi_type = rel.get('src_oc')
        db_ent.ismi_id = rel.get('src_id')
        db_ent.save()

        fetch_entity(rel.get('src_id'))

    if not ent_['ent'].get('src_rels', None):
        return None

    print("Getting source relationships")
    src_rels = ent_['ent']['src_rels']
    for rel in src_rels:
        if not rel.get('tar_id', None):
            continue
        if not rel.get('tar_oc', None):
            continue

        db_ent, created = get_model('imageserve', 'ISMIEntity').objects.get_or_create(ismi_id=rel.get('tar_id'))
        if not created:
            continue

        db_ent.synced = False
        db_ent.ismi_type = rel.get('tar_oc')
        db_ent.ismi_id = rel.get('tar_id')
        db_ent.save()

        fetch_entity(rel.get('tar_id'))