task.py 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. # -*- coding: utf-8 -*-
  2. """
  3. walle-web
  4. :copyright: © 2015-2017 walle-web.io
  5. :created time: 2017-03-25 11:15:01
  6. :author: wushuiyong@walle-web.io
  7. """
  8. from flask import request, current_app, abort
  9. from walle.api.api import SecurityResource
  10. from walle.form.task import TaskForm
  11. from walle.model.task import TaskModel
  12. from walle.service.extensions import permission
  13. from walle.service.rbac.role import *
  14. class TaskAPI(SecurityResource):
  15. actions = ['audit', 'reject']
  16. def get(self, task_id=None):
  17. """
  18. fetch project list or one item
  19. /project/<int:project_id>
  20. :return:
  21. """
  22. super(TaskAPI, self).get()
  23. return self.item(task_id) if task_id else self.list()
  24. def list(self):
  25. """
  26. fetch project list
  27. :return:
  28. """
  29. page = int(request.args.get('page', 0))
  30. page = page - 1 if page else 0
  31. size = int(request.args.get('size', 10))
  32. kw = request.values.get('kw', '')
  33. task_model = TaskModel()
  34. task_list, count = task_model.list(page=page, size=size, kw=kw, space_id=self.space_id)
  35. return self.list_json(list=task_list, count=count, enable_create=permission.enable_role(REPORT) and current_user.role != SUPER)
  36. def item(self, task_id):
  37. """
  38. 获取某个用户组
  39. :param id:
  40. :return:
  41. """
  42. task_model = TaskModel(id=task_id)
  43. task_info = task_model.item()
  44. if not task_info:
  45. return self.render_json(code=-1)
  46. return self.render_json(data=task_info)
  47. def post(self):
  48. """
  49. create a task
  50. /task/
  51. :return:
  52. """
  53. super(TaskAPI, self).post()
  54. form = TaskForm(request.form, csrf_enabled=False)
  55. # return self.render_json(code=-1, data = form.form2dict())
  56. if form.validate_on_submit():
  57. task_new = TaskModel()
  58. data = form.form2dict()
  59. id = task_new.add(data)
  60. if not id:
  61. return self.render_json(code=-1)
  62. return self.render_json(data=task_new.item())
  63. else:
  64. return self.render_json(code=-1, message=form.errors)
  65. def put(self, task_id, action=None):
  66. """
  67. update task
  68. /task/<int:id>
  69. :return:
  70. """
  71. super(TaskAPI, self).put()
  72. if action:
  73. if action in self.actions:
  74. self_action = getattr(self, action.lower(), None)
  75. return self_action(task_id=task_id)
  76. else:
  77. abort(404)
  78. else:
  79. return self.update(task_id=task_id)
  80. def update(self, task_id):
  81. form = TaskForm(request.form, csrf_enabled=False)
  82. form.set_id(task_id)
  83. if form.validate_on_submit():
  84. task = TaskModel().get_by_id(task_id)
  85. data = form.form2dict()
  86. # a new type to update a model
  87. ret = task.update(data)
  88. return self.render_json(data=task.item())
  89. else:
  90. return self.render_json(code=-1, message=form.errors)
  91. def delete(self, task_id):
  92. """
  93. remove an task
  94. /task/<int:id>
  95. :return:
  96. """
  97. super(TaskAPI, self).delete()
  98. task_model = TaskModel(id=task_id)
  99. task_model.remove(task_id)
  100. return self.render_json(message='')
  101. def audit(self, task_id):
  102. """
  103. 审核任务
  104. :param task_id:
  105. :return:
  106. """
  107. task = TaskModel().get_by_id(task_id)
  108. ret = task.update({'status': TaskModel.status_pass})
  109. return self.render_json(data=task.item(task_id))
  110. def reject(self, task_id):
  111. """
  112. 审核任务
  113. :param task_id:
  114. :return:
  115. """
  116. task = TaskModel().get_by_id(task_id)
  117. ret = task.update({'status': TaskModel.status_reject})
  118. return self.render_json(data=task.item(task_id))