コード例 #1
0
 def insert(entity: Entity,
            property_code: str,
            range_: Union[Entity, list[Entity]],
            description: Optional[str] = None,
            inverse: bool = False,
            type_id: Optional[int] = None) -> list[int]:
     property_ = g.properties[property_code]
     entities = range_ if isinstance(range_, list) else [range_]
     new_link_ids = []
     for linked_entity in entities:
         domain = linked_entity if inverse else entity
         range_ = entity if inverse else linked_entity
         domain_error = True
         range_error = True
         if property_.find_object('domain_class_code',
                                  domain.class_.cidoc_class.code):
             domain_error = False
         if property_.find_object('range_class_code',
                                  range_.class_.cidoc_class.code):
             range_error = False
         if domain_error or range_error:  # pragma: no cover
             text = \
                 f"invalid CIDOC link {domain.class_.cidoc_class.code}" \
                 f" > {property_code} > {range_.class_.cidoc_class.code}"
             logger.log('error', 'model', text)
             abort(400, text)
         id_ = Db.insert({
             'property_code': property_code,
             'domain_id': domain.id,
             'range_id': range_.id,
             'description': description,
             'type_id': type_id
         })
         new_link_ids.append(id_)
     return new_link_ids
コード例 #2
0
ファイル: test_admin.py プロジェクト: craws/OpenAtlas
 def test_links(self) -> None:
     from openatlas.database.entity import Entity as DbEntity
     from openatlas.database.link import Link as DbLink
     with app.app_context():
         with app.test_request_context():
             app.preprocess_request()  # type: ignore
             id_ = DbEntity.insert({
                 'name': 'Invalid linked entity',
                 'openatlas_class_name': 'artifact',
                 'code': 'E13', 'description': ''})
             DbLink.insert({
                 'property_code': 'P86',
                 'domain_id': id_,
                 'range_id': id_,
                 'description': '',
                 'type_id': None})
             rv = self.app.get(url_for('admin_check_links'))
             assert b'Invalid linked entity' in rv.data
コード例 #3
0
ファイル: link.py プロジェクト: nhmvienna/OpenAtlas
 def insert(
         entity: 'Entity',
         property_code: str,
         range_: Union['Entity', List['Entity']],
         description: Optional[str] = None,
         inverse: bool = False,
         type_id: Optional[int] = None) -> List[int]:
     property_ = g.properties[property_code]
     entities = range_ if isinstance(range_, list) else [range_]
     new_link_ids = []
     for linked_entity in entities:
         domain = linked_entity if inverse else entity
         range_ = entity if inverse else linked_entity
         domain_error = True
         range_error = True
         if property_.find_object(
                 'domain_class_code',
                 domain.class_.cidoc_class.code):
             domain_error = False
         if property_.find_object(
                 'range_class_code',
                 range_.class_.cidoc_class.code):
             range_error = False
         if domain_error or range_error:
             text = \
                 f"{_('error link')}: {domain.class_.cidoc_class.code} > " \
                 f"{property_code} > {range_.class_.cidoc_class.code}"
             logger.log('error', 'model', text)
             flash(text, 'error')
             continue
         id_ = Db.insert({
             'property_code': property_code,
             'domain_id': domain.id,
             'range_id': range_.id,
             'description': description,
             'type_id': type_id})
         new_link_ids.append(id_)
     return new_link_ids