Пример #1
0
def process_warn_rules(sakuya_db, chart_id, warns):

    try:
        cur = {}
        for row in sakuya_db.query(WarnRules).filter_by(chart_id=chart_id):
            cur[row.id] = row

        for item in warns:
            id = item.pop('id')
            if id in cur:
                row = cur.pop(id)
                row.content = json.dumps(item)
            else:
                row = WarnRules()
                row.chart_id = chart_id
                row.content = json.dumps(item)
                sakuya_db.add(row)

        for row in cur.values():
            sakuya_db.delete(row)

        sakuya_db.commit()

        for row in sakuya_db.query(Follows).filter_by(cid=chart_id,
                                                      recv_warning=True):

            if row.recv_rules == 'all':
                continue

            if not row.recv_rules:
                continue

            recv_rules = []
            for i in row.get_recv_rules():
                if i not in cur.keys():
                    recv_rules.append(i)

            row.recv_rules = ','.join(str(i) for i in recv_rules)

        sakuya_db.commit()

    except Exception, e:
        traceback.print_exc()
        sakuya_db.rollback()
Пример #2
0
def process_warn_rules(sakuya_db, chart_id, warns):

    try:
        cur = {}
        for row in sakuya_db.query(WarnRules).filter_by(chart_id=chart_id):
            cur[row.id] = row

        for item in warns:
            id = item.pop('id')
            if id in cur:
                row = cur.pop(id)
                row.content = json.dumps(item)
            else:
                row = WarnRules()
                row.chart_id = chart_id
                row.content = json.dumps(item)
                sakuya_db.add(row)

        for row in cur.values():
            sakuya_db.delete(row)

        sakuya_db.commit()

        for row in sakuya_db.query(Follows).filter_by(cid=chart_id, recv_warning=True):

            if row.recv_rules == 'all':
                continue

            if not row.recv_rules:
                continue

            recv_rules = []
            for i in row.get_recv_rules():
                if i not in cur.keys():
                    recv_rules.append(i)

            row.recv_rules = ','.join(str(i) for i in recv_rules)

        sakuya_db.commit()

    except Exception, e:
        traceback.print_exc()
        sakuya_db.rollback()