notify.py 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. from flask import Blueprint, request
  2. from libs.tools import json_response, JsonParser, Argument
  3. from .models import NotifyWay
  4. from libs.decorators import require_permission
  5. blueprint = Blueprint(__name__, __name__)
  6. @blueprint.route('/', methods=['GET'])
  7. @require_permission('system_notify_view | system_notify_add | system_notify_edit | system_notify_del')
  8. def get():
  9. form, error = JsonParser(Argument('page', type=int, default=1, required=False),
  10. Argument('pagesize', type=int, default=10, required=False),
  11. Argument('notify_query', type=dict, required=False), ).parse(request.args)
  12. if error is None:
  13. notify_data = NotifyWay.query
  14. if form.page == -1:
  15. return json_response({'data': [x.to_json() for x in notify_data.all()], 'total': -1})
  16. if form.notify_query.get('name_field'):
  17. notify_data = notify_data.filter(NotifyWay.name.like('%{}%'.format(form.notify_query['name_field'])))
  18. result = notify_data.limit(form.pagesize).offset((form.page - 1) * form.pagesize).all()
  19. return json_response({'data': [x.to_json() for x in result], 'total': notify_data.count()})
  20. return json_response(message=error)
  21. @blueprint.route('/', methods=['POST'])
  22. @require_permission('system_notify_add')
  23. def post():
  24. form, error = JsonParser('name', 'value',
  25. Argument('desc', nullable=True)).parse()
  26. if error is None:
  27. notify_is_exist = NotifyWay.query.filter_by(name=form.name).first()
  28. if notify_is_exist:
  29. return json_response(message="通知名称已存在")
  30. NotifyWay(**form).save()
  31. return json_response()
  32. return json_response(message=error)
  33. @blueprint.route('/<int:u_id>', methods=['DELETE'])
  34. @require_permission('system_notify_del')
  35. def delete(u_id):
  36. NotifyWay.query.get_or_404(u_id).delete()
  37. return json_response(), 204
  38. @blueprint.route('/<int:n_id>', methods=['PUT'])
  39. @require_permission('system_notify_edit')
  40. def put(n_id):
  41. form, error = JsonParser('name', 'value',
  42. Argument('desc', nullable=True)).parse()
  43. if error is None:
  44. notify_info = NotifyWay.query.get_or_404(n_id)
  45. if not notify_info.update(**form):
  46. notify_info.save()
  47. return json_response(notify_info)
  48. return json_response(message=error)