Exemple #1
0
def edit(sakuya_db, id):

    row = sakuya_db.query(Charts).get(id)
    if row is None:
        abort(404)

    is_haopan = haopan.is_haopan(row.cate_id)
    is_copy = request.params.get('copy') == '1'

    if auth.is_role('sa'):
        warn_only = False
    elif auth.is_role(
            'haopan'
    ) and is_haopan:  # this can be replaced with userid-cid authorization
        warn_only = True
    elif auth.get_user()['username'] == row.owner:
        warn_only = True
    else:
        abort(403)

    if is_copy and (is_haopan or warn_only):
        abort(400)

    rt = _rt(sakuya_db)
    rt['id'] = id
    rt['editing'] = not is_copy
    rt['warn_only'] = warn_only
    rt['is_haopan'] = is_haopan

    forms = {
        'name': haopan.format_title(row.name) if is_haopan else row.name,
        'cid': row.cate_id,
        'owner': row.owner,
        'alert_enable': row.alert_enable
    }

    ext = row.get_ext()
    forms['rule'] = dump_rule(ext.get('rule'))
    forms['warn'] = dump_warn(warn.get_warn(sakuya_db, id))

    forms['owner_name'] = '系统'
    for item in rt['users']:
        if item['username'] == forms['owner']:
            forms['owner_name'] = item['truename']

    rt['forms'] = forms

    return rt
Exemple #2
0
def edit(sakuya_db, id):

    row = sakuya_db.query(Charts).get(id)
    if row is None:
        abort(404)

    is_haopan = haopan.is_haopan(row.cate_id)
    is_copy = request.params.get('copy') == '1'

    if auth.is_role('sa'):
        warn_only = False
    elif auth.is_role('haopan') and is_haopan: # this can be replaced with userid-cid authorization
        warn_only = True
    elif auth.get_user()['username'] == row.owner:
        warn_only = True
    else:
        abort(403)

    if is_copy and (is_haopan or warn_only):
        abort(400)

    rt = _rt(sakuya_db)
    rt['id'] = id
    rt['editing'] = not is_copy
    rt['warn_only'] = warn_only
    rt['is_haopan'] = is_haopan

    forms = {
        'name': haopan.format_title(row.name) if is_haopan else row.name,
        'cid': row.cate_id,
        'owner': row.owner,
        'alert_enable': row.alert_enable
    }

    ext = row.get_ext()
    forms['rule'] = dump_rule(ext.get('rule'))
    forms['warn'] = dump_warn(warn.get_warn(sakuya_db, id))

    forms['owner_name'] = '系统'
    for item in rt['users']:
        if item['username'] == forms['owner']:
            forms['owner_name'] = item['truename']

    rt['forms'] = forms

    return rt
Exemple #3
0
                        'negative': item[2],
                        'content': item[3]
                    })

                rt['storm_info'] = storm_info

            elif chart_info.api_ip and chart_info.api_ts:
                rt['api_ip'] = util.long2ip(chart_info.api_ip)
                rt['api_ts'] = datetime.datetime.fromtimestamp(chart_info.api_ts).strftime('%Y-%m-%d %H:%M:%S')

        except Exception, e:
            pass

    # alert info
    if chart_info.alert_enable:
        rt['alert_info'] = warn.get_warn(sakuya_db, id)

        # Show subscribers for respective warning rule.
        rule_subscribers = dict((i['id'], []) for i in rt['alert_info'])
        for row in sakuya_db.\
                   query(Follows).\
                   filter_by(cid=chart_info.id).\
                   filter_by(recv_warning=True):
            if not row.recv_rules:
                continue
            tmp_user = sakuya_db.query(Users).get(row.follower)
            if tmp_user is None:
                continue
            if row.recv_rules == 'all':
                for k, v in rule_subscribers.iteritems():
                    v.append(tmp_user.truename)
Exemple #4
0
                        item[3]
                    })

                rt['storm_info'] = storm_info

            elif chart_info.api_ip and chart_info.api_ts:
                rt['api_ip'] = util.long2ip(chart_info.api_ip)
                rt['api_ts'] = datetime.datetime.fromtimestamp(
                    chart_info.api_ts).strftime('%Y-%m-%d %H:%M:%S')

        except Exception, e:
            pass

    # alert info
    if chart_info.alert_enable:
        rt['alert_info'] = warn.get_warn(sakuya_db, id)

        # Show subscribers for respective warning rule.
        rule_subscribers = dict((i['id'], []) for i in rt['alert_info'])
        for row in sakuya_db.\
                   query(Follows).\
                   filter_by(cid=chart_info.id).\
                   filter_by(recv_warning=True):
            if not row.recv_rules:
                continue
            tmp_user = sakuya_db.query(Users).get(row.follower)
            if tmp_user is None:
                continue
            if row.recv_rules == 'all':
                for k, v in rule_subscribers.iteritems():
                    v.append(tmp_user.truename)