online.py 2.3 KB

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