def _save(self, query): values = self.wrap() identifier, update = values.pop('identifier') self._tmp_identifier = generate_tmp_identifier() ## create or update the vertex create = False if not identifier: create = True query = query.create_vertex() else: query = query.by_identifier(self.identifier) for name, (value, update) in values.iteritems(): if create or update: query.set(name, value) query.store(self._tmp_identifier) # save any edge if needed for edge in chain(self.incomings, self.outgoings): if not edge.saving(): edge._save(query) return query
def tmp_identifier(vertex_name, query): vertex = getattr(self, vertex_name) if vertex.new(): if not vertex.saving(): vertex._save(query) else: # FIXME: don't need to load the object to retrieve the # identifier if not vertex._tmp_identifier: query = query.by_identifier(vertex.identifier) vertex._tmp_identifier = generate_tmp_identifier() query.store(vertex._tmp_identifier) return vertex._tmp_identifier
def _save(self, query): values = self.wrap() identifier, update = values.pop('identifier') self._tmp_identifier = generate_tmp_identifier() ## create or update create = False if not identifier: create = True def tmp_identifier(vertex_name, query): vertex = getattr(self, vertex_name) if vertex.new(): if not vertex.saving(): vertex._save(query) else: # FIXME: don't need to load the object to retrieve the # identifier if not vertex._tmp_identifier: query = query.by_identifier(vertex.identifier) vertex._tmp_identifier = generate_tmp_identifier() query.store(vertex._tmp_identifier) return vertex._tmp_identifier start = tmp_identifier('start', query) end = tmp_identifier('end', query) query = query.create_edge( start, end, ) else: query = query.by_identifier(self.identifier) for name, (value, update) in values.iteritems(): if create or update: query.set(name, value) self._tmp_identifier = generate_tmp_identifier() query.store(self._tmp_identifier) return query