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
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()