def addNodes(nodes): added = [] for id in nodes: node,revision,tags = getNode(id) node['version'] = node['vid'] node['user'] = node['uid'] node['id'] = node['nid'] revision['user'] = revision['uid'] revision['id'] = revision['vid'] revision['node'] = revision['nid'] del(node['status']) del(node['uid']) del(node['nid']) del(node['vid']) del(revision['uid']) del(revision['nid']) del(revision['vid']) # add the nodes try: dbnode = Node.get(node['id']) del(node['id']) dbnode.set(**node) except SQLObjectNotFound: dbnode = Node(**node) try: dbnoder = NodeRevision.get(revision['id']) del(revision['id']) dbnoder.set(**revision) except SQLObjectNotFound: dbnoder = NodeRevision(**revision) # add the termnodes for tag in tags: tag['node'] = tag['nid'] tag['term'] = tag['tid'] del(tag['nid']) del(tag['tid']) try: dbtag = Term.get(tag['term']) except SQLObjectNotFound: dbtag = addTags([tag['term']])[0] terms = list(TermNode.selectBy(node=dbnode,term=dbtag)) if not terms: term = TermNode(**tag) else: term = terms[0] print "Node %d made!" % id added.append(id) return added
def syncNodes(): print "syncing nodes" tags_checked = [] users_checked = [] nodes_checked = [] tags_new = [] users_new = [] nodes_new = [] for node in getNewNodes(): tid = node['tid'] nid = node['nid'] changed = node['changed'] uid = node['uid'] if tid not in tags_checked: try: term = Term.get(tid) except SQLObjectNotFound: tags_new.append(tid) tags_checked.append(tid) if uid not in users_checked: try: node = User.get(uid) except SQLObjectNotFound: users_new.append(uid) users_checked.append(uid) if nid not in nodes_checked: try: node = Node.get(nid) if node.changed < changed: nodes_new.append(nid) except SQLObjectNotFound: nodes_new.append(nid) nodes_checked.append(nid) hub.begin() # add new db information addTags(tags_new) addUsers(users_new) nodes = addNodes(nodes_new) setWeight() hub.commit() return nodes