Пример #1
0
    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)])
Пример #2
0
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()
Пример #3
0
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()
Пример #4
0
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))