暫無描述

dashboard_db.py 4.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. # IRIS Source Code
  2. # Copyright (C) 2021 - Airbus CyberSecurity (SAS)
  3. # ir@cyberactionlab.net
  4. #
  5. # This program is free software; you can redistribute it and/or
  6. # modify it under the terms of the GNU Lesser General Public
  7. # License as published by the Free Software Foundation; either
  8. # version 3 of the License, or (at your option) any later version.
  9. #
  10. # This program is distributed in the hope that it will be useful,
  11. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  13. # Lesser General Public License for more details.
  14. #
  15. # You should have received a copy of the GNU Lesser General Public License
  16. # along with this program; if not, write to the Free Software Foundation,
  17. # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  18. from flask_login import current_user
  19. from sqlalchemy import and_
  20. from sqlalchemy import desc
  21. from app import db
  22. from app.models.models import CaseTasks
  23. from app.models.models import TaskAssignee
  24. from app.models.models import ReviewStatus
  25. from app.models.cases import Cases
  26. from app.models.models import GlobalTasks
  27. from app.models.models import TaskStatus
  28. from app.models.authorization import User
  29. def list_global_tasks():
  30. ct = GlobalTasks.query.with_entities(
  31. GlobalTasks.id.label("task_id"),
  32. GlobalTasks.task_uuid,
  33. GlobalTasks.task_title,
  34. GlobalTasks.task_description,
  35. GlobalTasks.task_last_update,
  36. GlobalTasks.task_tags,
  37. User.name.label('user_name'),
  38. GlobalTasks.task_assignee_id,
  39. GlobalTasks.task_status_id,
  40. TaskStatus.status_name,
  41. TaskStatus.status_bscolor
  42. ).join(
  43. GlobalTasks.user_assigned
  44. ).order_by(
  45. desc(TaskStatus.status_name)
  46. ).join(
  47. GlobalTasks.status
  48. ).all()
  49. return ct
  50. def get_global_task(task_id):
  51. ct = GlobalTasks.query.with_entities(
  52. GlobalTasks.id.label("task_id"),
  53. GlobalTasks.task_uuid,
  54. GlobalTasks.task_title,
  55. GlobalTasks.task_description,
  56. GlobalTasks.task_last_update,
  57. GlobalTasks.task_tags,
  58. User.name.label('user_name'),
  59. GlobalTasks.task_assignee_id,
  60. GlobalTasks.task_status_id,
  61. TaskStatus.status_name,
  62. TaskStatus.status_bscolor
  63. ).filter(
  64. GlobalTasks.id == task_id
  65. ).join(
  66. GlobalTasks.user_assigned
  67. ).join(
  68. GlobalTasks.status
  69. ).order_by(
  70. desc(TaskStatus.status_name)
  71. ).first()
  72. return ct
  73. def get_tasks_status():
  74. return TaskStatus.query.all()
  75. def list_user_reviews():
  76. ct = Cases.query.with_entities(
  77. Cases.case_id,
  78. Cases.name,
  79. ReviewStatus.status_name,
  80. ReviewStatus.id.label('status_id')
  81. ).join(
  82. Cases.review_status
  83. ).filter(
  84. Cases.reviewer_id == current_user.id,
  85. ReviewStatus.status_name != 'Reviewed',
  86. ReviewStatus.status_name != 'Not reviewed'
  87. ).all()
  88. return ct
  89. def list_user_tasks():
  90. ct = CaseTasks.query.with_entities(
  91. CaseTasks.id.label("task_id"),
  92. CaseTasks.task_title,
  93. CaseTasks.task_description,
  94. CaseTasks.task_last_update,
  95. CaseTasks.task_tags,
  96. Cases.name.label('task_case'),
  97. CaseTasks.task_case_id.label('case_id'),
  98. CaseTasks.task_status_id,
  99. TaskStatus.status_name,
  100. TaskStatus.status_bscolor
  101. ).join(
  102. CaseTasks.case
  103. ).order_by(
  104. desc(TaskStatus.status_name)
  105. ).filter(and_(
  106. TaskStatus.status_name != 'Done',
  107. TaskStatus.status_name != 'Canceled'
  108. )).join(
  109. CaseTasks.status,
  110. ).filter(and_(
  111. TaskAssignee.task_id == CaseTasks.id,
  112. TaskAssignee.user_id == current_user.id
  113. )).all()
  114. return ct
  115. def update_gtask_status(task_id, status):
  116. if task_id != 0:
  117. task = GlobalTasks.query.filter(
  118. GlobalTasks.id == task_id
  119. ).first()
  120. try:
  121. task.task_status_id = status
  122. db.session.commit()
  123. return task
  124. except:
  125. pass
  126. return None
  127. def update_utask_status(task_id, status, case_id):
  128. if task_id != 0:
  129. task = CaseTasks.query.filter(
  130. CaseTasks.id == task_id,
  131. CaseTasks.task_case_id == case_id
  132. ).first()
  133. if task:
  134. try:
  135. task.task_status_id = status
  136. db.session.commit()
  137. return True
  138. except:
  139. pass
  140. return False
  141. def get_task_status(task_status_id):
  142. ret = TaskStatus.query.filter(
  143. TaskStatus.id == task_status_id
  144. ).first()
  145. return ret
  146. def list_user_cases(show_all=False):
  147. if show_all:
  148. return Cases.query.filter(
  149. Cases.owner_id == current_user.id
  150. ).all()
  151. return Cases.query.filter(
  152. Cases.owner_id == current_user.id,
  153. Cases.close_date == None
  154. ).all()