task.py 3.7 KB

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