IT系统的"数据导出"属于核心操作,很多安全要求较高的系统甚至采用了“金库模式”去管理数据导出,这里为grid组件的数据导出,增加日志记录功能:
一、db文件中单独增加日志表
db.define_table('OP_log',
Field('Op_type', 'string', label='类型', requires=IS_IN_SET(['数据导出', '业务操作'])),
Field('Op_content','text',label='内容'),
Field('Op_user','string',label='用户'),
Field('Op_time','datetime',label='时间'))
二、gluon文件下的sqlhtml.py修改
找到:if export_type in exportManager and exportManager[export_type]:开始修改:
if export_type in exportManager and exportManager[export_type]:
if keywords:
try:
......
......
rows = dbset.select(left=left, orderby=orderby,
cacheable=True, *selectable_columns)
# todo 插入日志
db.OP_log.insert(Op_type='数据导出',
Op_content='['+request.controller+']['+request.function+']['+keywords+']',
Op_user=current.auth.user.first_name,
Op_time=datetime.datetime.today(),)
......
......
else:
......
......
rows = dbset.select(left=left, orderby=orderby,
cacheable=True, *selectable_columns)
# todo 插入日志
db.OP_log.insert(Op_type='数据导出',
Op_content='[' + request.controller + '][' + request.function + '][全量]',
Op_user=current.auth.user.first_name,
Op_time=datetime.datetime.today(), )
'['+request.controller+']['+request.function+']记录操作结点 ['+keywords+']'记录了数据范围
三、补充说明
系统内有其他地方有参考之前文章:《web2py不使用grid,完全自定义导出excel文件的方法》数据的,亦可在导出数据时,增加日志》