online.py 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. from ..base import base
  2. from ..models import OnLine
  3. from flask import render_template, request, jsonify
  4. from sqlalchemy import asc
  5. from sqlalchemy import desc
  6. import flask_excel as excel
  7. from flask_login import login_required
  8. @base.route('/monitor/logininfor/list', methods=['GET'])
  9. @login_required
  10. def grid_online():
  11. filters = []
  12. if request.args.get('userName'):
  13. filters.append(OnLine.LOGINNAME.like('%' + request.args.get('userName') + '%'))
  14. if request.args.get('ipaddr'):
  15. filters.append(OnLine.IP.like('%' + request.args.get('ipaddr') + '%'))
  16. if request.args.get('type'):
  17. filters.append(OnLine.TYPE == request.args.get('type'))
  18. if 'params[beginTime]' in request.args and 'params[endTime]' in request.args:
  19. filters.append(OnLine.CREATEDATETIME > request.args['params[beginTime]'])
  20. filters.append(OnLine.CREATEDATETIME < request.args['params[endTime]'])
  21. order_by = []
  22. if request.form.get('sort'):
  23. if request.form.get('order') == 'asc':
  24. order_by.append(asc(getattr(OnLine,request.form.get('sort').upper())))
  25. elif request.form.get('order') == 'desc':
  26. order_by.append(desc(getattr(OnLine,request.form.get('sort').upper())))
  27. else:
  28. order_by.append(getattr(OnLine,request.form.get('sort').upper()))
  29. page = request.form.get('page', 1, type=int)
  30. rows = request.form.get('rows', 10, type=int)
  31. pagination = OnLine.query.filter(*filters).order_by(*order_by).paginate(
  32. page=page, per_page=rows, error_out=False)
  33. onlines = pagination.items
  34. return jsonify({'total': OnLine.query.count(), 'rows': [online.to_json() for online in onlines], 'code': 200})
  35. @base.route('/base/syonline!export.action', methods=['POST'])
  36. @login_required
  37. def online_export():
  38. rows = []
  39. rows.append(['登录名', 'IP地址', '创建时间', '类别'])
  40. onlines = OnLine.query.all()
  41. for online in onlines:
  42. row = []
  43. row.append(online.LOGINNAME)
  44. row.append(online.IP)
  45. row.append(online.CREATEDATETIME)
  46. if online.TYPE == '0':
  47. row.append('注销系统')
  48. elif online.TYPE == '1':
  49. row.append('登录系统')
  50. rows.append(row)
  51. return excel.make_response_from_array(rows, "csv",
  52. file_name="online")