Example #1
0
 def get_invalid_cidoc_links() -> list[dict[str, str]]:
     from openatlas.models.entity import Entity
     from openatlas.util.util import link
     invalid_linking = []
     for row in Db.get_cidoc_links():
         property_ = g.properties[row['property_code']]
         domain_is_valid = property_.find_object('domain_class_code',
                                                 row['domain_code'])
         range_is_valid = property_.find_object('range_class_code',
                                                row['range_code'])
         if not domain_is_valid or not range_is_valid:
             invalid_linking.append(row)
     invalid_links = []
     for item in invalid_linking:
         for row in Db.get_invalid_links(item):
             domain = Entity.get_by_id(row['domain_id'])
             range_ = Entity.get_by_id(row['range_id'])
             invalid_links.append({
                 'domain':
                 f"{link(domain)} ({domain.cidoc_class.code})",
                 'property':
                 link(g.properties[row['property_code']]),
                 'range':
                 f"{link(range_)} ({range_.cidoc_class.code})"
             })
     return invalid_links
Example #2
0
 def check_links() -> List[Dict[str, str]]:
     """ Check all existing links for CIDOC CRM validity and return the invalid ones."""
     from openatlas.util.display import link
     from openatlas.models.entity import Entity
     invalid_links = []
     for row in Db.get_cidoc_links():
         property_ = g.properties[row['property']]
         domain_is_valid = property_.find_object('domain_class_code',
                                                 row['domain'])
         range_is_valid = property_.find_object('range_class_code',
                                                row['range'])
         invalid_linking = []
         if not domain_is_valid or not range_is_valid:
             invalid_linking.append(row)
         for item in invalid_linking:
             for row2 in Db.get_invalid_links(item):
                 domain = Entity.get_by_id(row2['domain_id'])
                 range_ = Entity.get_by_id(row2['range_id'])
                 invalid_links.append({
                     'domain':
                     link(domain) + ' (' + domain.cidoc_class.code + ')',
                     'property':
                     link(g.properties[row2['property_code']]),
                     'range':
                     link(range_) + ' (' + range_.cidoc_class.code + ')'
                 })
     return invalid_links