def test_build_index(self): coll = [ {'id': 1, 'cd': 2, 'msg': 'm'}, {'id': 1, 'cd': 2, 'msg': 'm'}, {'id': 1, 'cd': 3, 'msg': 'm'}, {'id': 2, 'cd': 4, 'msg': 'm'} ] index = build_index(coll, 'id') self.assertEquals(2, len(index)) self.assertDictEqual(coll[2], index[(1,)]) self.assertDictEqual(coll[3], index[(2,)]) index = build_index(coll, 'id', 'cd') self.assertEquals(3, len(index)) self.assertDictEqual(coll[1], index[(1, 2)]) self.assertDictEqual(coll[2], index[(1, 3)]) self.assertDictEqual(coll[3], index[(2, 4)])
def _separate_action_logs(action_logs): existed_objs = [] action_logs_idx = util.build_index(action_logs, 'node_aid', 'external_id') clauses = [] for aid, ext_id in action_logs_idx.keys(): clauses.append( and_(ActionLog.node_aid == aid, ActionLog.external_id == ext_id)) found_objs = db.session.query(ActionLog).filter(or_(*clauses)).all() for existed in found_objs: existed_objs.append(existed) idx = (existed.node_aid, existed.external_id) action_logs_idx.pop(idx) return existed_objs, action_logs_idx.values()
def _separate_action_logs(action_logs): existed_objs = [] action_logs_idx = util.build_index(action_logs, 'node_aid', 'external_id') clauses = [] for aid, ext_id in action_logs_idx.keys(): clauses.append(and_( ActionLog.node_aid == aid, ActionLog.external_id == ext_id )) found_objs = db.session.query(ActionLog).filter(or_(*clauses)).all() for existed in found_objs: existed_objs.append(existed) idx = (existed.node_aid, existed.external_id) action_logs_idx.pop(idx) return existed_objs, action_logs_idx.values()
def _separate_action_logs(action_logs): existed_objs = [] action_logs_idx = \ util.build_index(action_logs, 'master_node_uid', 'external_id') clauses = [] for master_node_uid, ext_id in six.iterkeys(action_logs_idx): clauses.append(and_( ActionLog.master_node_uid == master_node_uid, ActionLog.external_id == ext_id )) found_objs = db.session.query(ActionLog).filter(or_(*clauses)).all() for existed in found_objs: existed_objs.append(existed) idx = (existed.master_node_uid, existed.external_id) action_logs_idx.pop(idx) return existed_objs, list(six.itervalues(action_logs_idx))