Beispiel #1
0
def create_node(gdb, n, graph):
    original_id = n['_slug']
    n['_slug'] = defaultfilters.slugify(n['_slug'])[:150]
    node_properties = {}
    if original_id != n['_slug']:
        node_properties['id'] = original_id
    node_type_obj = NodeType.objects.filter(name=n['_type'])
    if node_type_obj:
        default_properties = node_type_obj[0].nodeproperty_set.all()
        for dp in default_properties:
            node_properties[dp.key] = dp.value
    for key, value in n.items():
        node_properties[key] = value
    result = search_in_index(gdb, n['_slug'], n['_type'], n['_graph'])
    if result:
        counter = 1
        slug = "%s-%s" % (n['_slug'], counter)
        result = search_in_index(gdb, slug, n['_type'], n['_graph'])
        while result:
            counter += 1
            slug = "%s-%s" % (n['_slug'], counter)
            result = search_in_index(gdb, slug, n['_type'], n['_graph'])
        node_properties['_slug'] = slug
    node = gdb.node(**node_properties)
    node.set('_url', "/".join(node.url.split('/')[-2:]))
    idx = gdb.nodes.indexes.get('sylva_nodes')
    idx['_slug'][node['_slug']] = node
    idx['_type'][node['_type']] = node

 
    idx['_graph'][node['_graph']] = node
    sql_node = Node(graph=graph,
                            node_id=node['_slug'],
                            node_type=node['_type'])
    sql_node.save()
    graph.node_set.add(sql_node)
    return node
Beispiel #2
0
 def save(self, *args, **kwargs):
     if self.address and not self.pk:
         n = Node(address=self.address)
         n.save() 
         self.node_id = n.id
     return super(WalkingLocation, self).save()