当前位置: 首页>>代码示例>>Python>>正文


Python Concept.add_relation方法代码示例

本文整理汇总了Python中arches.app.models.concept.Concept.add_relation方法的典型用法代码示例。如果您正苦于以下问题:Python Concept.add_relation方法的具体用法?Python Concept.add_relation怎么用?Python Concept.add_relation使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在arches.app.models.concept.Concept的用法示例。


在下文中一共展示了Concept.add_relation方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: create_reference_data

# 需要导入模块: from arches.app.models.concept import Concept [as 别名]
# 或者: from arches.app.models.concept.Concept import add_relation [as 别名]
                def create_reference_data(new_concepts, create_collections):
                    errors = []
                    candidates = Concept().get(id='00000000-0000-0000-0000-000000000006')
                    for arches_nodeid, concepts in new_concepts.iteritems():
                        collectionid = str(uuid.uuid4())
                        topconceptid = str(uuid.uuid4())
                        node = Node.objects.get(nodeid=arches_nodeid)

                        # if node.datatype is concept or concept-list create concepts and collections
                        if node.datatype in ['concept', 'concept-list']:
                            # create collection if create_collections = create, otherwise append to collection already assigned to node
                            if create_collections == True:
                                collection_legacyoid = node.name + '_' + str(node.graph_id) + '_import'
                                # check to see that there is not already a collection for this node
                                if node.config['rdmCollection'] != None:
                                    errors.append({'type': 'WARNING', 'message': 'A collection already exists for the {0} node. Use the add option to add concepts to this collection.'.format(node.name)})
                                    if len(errors) > 0:
                                        self.errors += errors
                                    collection = None
                                else:
                                    # if there is no collection assigned to this node, create one and assign it to the node
                                    try:
                                        # check to see that a collection with this legacyid does not already exist
                                        collection = Concept().get(legacyoid=collection_legacyoid)
                                        errors.append({'type': 'WARNING', 'message': 'A collection with the legacyid {0} already exists.'.format(node.name + '_' + str(node.graph_id) + '_import')})
                                        if len(errors) > 0:
                                            self.errors += errors
                                    except:
                                        collection = Concept({
                                            'id': collectionid,
                                            'legacyoid': collection_legacyoid,
                                            'nodetype': 'Collection'
                                        })
                                        collection.addvalue({'id': str(uuid.uuid4()), 'value': node.name + '_import', 'language': settings.LANGUAGE_CODE, 'type': 'prefLabel'})
                                        node.config['rdmCollection'] = collectionid
                                        node.save()
                                        collection.save()
                            else:
                                # if create collection = add check that there is a collection associated with node, if no collection associated with node create a collection and associated with the node
                                try:
                                    collection = Concept().get(id=node.config['rdmCollection'])
                                except:
                                    collection = Concept({
                                        'id': collectionid,
                                        'legacyoid': node.name + '_' + str(node.graph_id) + '_import',
                                        'nodetype': 'Collection'
                                    })
                                    collection.addvalue({'id': str(uuid.uuid4()), 'value': node.name + '_import', 'language': settings.LANGUAGE_CODE, 'type': 'prefLabel'})
                                    node.config['rdmCollection'] = collectionid
                                    node.save()
                                    collection.save()

                            if collection != None:
                                topconcept_legacyoid = node.name + '_' + str(node.graph_id)
                                # Check if top concept already exists, if not create it and add to candidates scheme
                                try:
                                    topconcept = Concept().get(legacyoid=topconcept_legacyoid)
                                except:
                                    topconcept = Concept({
                                        'id': topconceptid,
                                        'legacyoid': topconcept_legacyoid,
                                        'nodetype': 'Concept'
                                    })
                                    topconcept.addvalue({'id': str(uuid.uuid4()), 'value': node.name + '_import', 'language': settings.LANGUAGE_CODE, 'type': 'prefLabel'})
                                    topconcept.save()
                                candidates.add_relation(topconcept, 'narrower')

                                # create child concepts and relate to top concept and collection accordingly
                                for conceptid, value in concepts.iteritems():
                                    concept_legacyoid = value + '_' + node.name + '_' + str(node.graph_id)
                                    # check if concept already exists, if not create and add to topconcept and collection
                                    try:
                                        conceptid = [concept for concept in topconcept.get_child_concepts(topconcept.id) if concept[1] == value][0][0]
                                        concept = Concept().get(id=conceptid)
                                    except:
                                        concept = Concept({
                                            'id': conceptid,
                                            'legacyoid': concept_legacyoid,
                                            'nodetype': 'Concept'
                                        })
                                        concept.addvalue({'id': str(uuid.uuid4()), 'value': value, 'language': settings.LANGUAGE_CODE, 'type': 'prefLabel'})
                                        concept.save()
                                    collection.add_relation(concept, 'member')
                                    topconcept.add_relation(concept, 'narrower')

                        #if node.datatype is domain or domain-list create options array in node.config
                        elif node.datatype in ['domain-value', 'domain-value-list']:
                            for domainid, value in new_concepts[arches_nodeid].iteritems():
                                # check if value already exists in domain
                                if value not in [t['text'] for t in node.config['options']]:
                                    domainvalue = {
                                        "text": value,
                                        "selected": False,
                                        "id": domainid
                                    }
                                    node.config['options'].append(domainvalue)
                                    node.save()
开发者ID:fargeo,项目名称:arches,代码行数:99,代码来源:csvfile.py


注:本文中的arches.app.models.concept.Concept.add_relation方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。