online.py 2.4 KB

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