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
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
'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)
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)