12
12
from app .utils .bg_helper import BgHelper
13
13
from app .utils .reports import Report
14
14
from app .utils .authorizer import Authorizer
15
+ from werkzeug .utils import secure_filename
16
+ import os
15
17
16
18
17
19
@api .route ('/health' , methods = ['GET' ])
@@ -35,8 +37,7 @@ def set_session(id):
35
37
@login_required
36
38
def delete_tenant (id ):
37
39
result = Authorizer (current_user ).can_user_admin_tenant (id )
38
- db .session .delete (result ["extra" ]["tenant" ])
39
- db .session .commit ()
40
+ result ["extra" ]["tenant" ].delete ()
40
41
return jsonify ({"message" : "ok" })
41
42
42
43
@api .route ('/questionnaires/<int:qid>' , methods = ['GET' ])
@@ -252,6 +253,24 @@ def get_comments_for_project(pid):
252
253
data = [comment .as_dict () for comment in result ["extra" ]["project" ].comments .order_by (models .ProjectComment .id .asc ()).all ()]
253
254
return jsonify (data )
254
255
256
+ @api .route ('/projects/<int:pid>/findings' , methods = ['GET' ])
257
+ @login_required
258
+ def get_findings_for_project (pid ):
259
+ result = Authorizer (current_user ).can_user_manage_project (pid )
260
+ data = [finding .as_dict () for finding in result ["extra" ]["project" ].findings .all ()]
261
+ return jsonify (data )
262
+
263
+ @api .route ('/projects/<int:pid>/integrations' , methods = ['GET' ])
264
+ @login_required
265
+ def get_integrations_for_project (pid ):
266
+ result = Authorizer (current_user ).can_user_manage_project (pid )
267
+ # include all available integrations
268
+ summary = request .args .get ("summary" )
269
+ if summary == "yes" :
270
+ return jsonify (result ["extra" ]["project" ].get_integration_summary ())
271
+ data = [integration .as_dict () for integration in result ["extra" ]["project" ].integrations .all ()]
272
+ return jsonify (data )
273
+
255
274
@api .route ('/projects/<int:pid>/matrix/summary' , methods = ['GET' ])
256
275
@login_required
257
276
def get_resp_matrix_summary_for_project (pid ):
@@ -649,33 +668,34 @@ def get_evidence(eid):
649
668
@login_required
650
669
def add_evidence_for_tenant (tid ):
651
670
result = Authorizer (current_user ).can_user_manage_tenant (tid )
652
- payload = request .get_json ()
653
- evidence = models .Evidence (name = payload ["name" ],
654
- description = payload ["description" ],
655
- content = payload ["content" ],owner_id = current_user .id ,
656
- collected_on = payload ["collected" ] or None )
671
+ evidence = models .Evidence (name = request .form .get ("name" ),
672
+ description = request .form .get ("description" ),
673
+ content = request .form .get ("content" ),owner_id = current_user .id ,
674
+ collected_on = request .form .get ("collected" ) or arrow .utcnow ().format ("MM/DD/YYYY" ))
657
675
result ["extra" ]["tenant" ].evidence .append (evidence )
658
676
db .session .commit ()
677
+ evidence .diff_files_with_checks (request .files .getlist ("file" ), execute = True )
659
678
return jsonify (evidence .as_dict ())
660
679
661
680
@api .route ('/evidence/<int:eid>' , methods = ['PUT' ])
662
681
@login_required
663
682
def update_evidence (eid ):
664
683
result = Authorizer (current_user ).can_user_manage_evidence (eid )
665
- payload = request .get_json ()
666
- result ["extra" ]["evidence" ].name = payload ["name" ]
667
- result ["extra" ]["evidence" ].description = payload ["description" ]
668
- result ["extra" ]["evidence" ].content = payload ["content" ]
669
- result ["extra" ]["evidence" ].collected_on = payload ["collected" ]
684
+ evidence = result ["extra" ]["evidence" ]
685
+ evidence .name = request .form .get ("name" )
686
+ evidence .description = request .form .get ("description" )
687
+ evidence .content = request .form .get ("content" )
688
+ if request .form .get ("collected" ):
689
+ evidence .collected_on = request .form .get ("collected" )
670
690
db .session .commit ()
671
- return jsonify (result ["extra" ]["evidence" ].as_dict ())
691
+ evidence .diff_files_with_checks (request .files .getlist ("file" ), execute = True )
692
+ return jsonify (evidence .as_dict ())
672
693
673
694
@api .route ('/evidence/<int:eid>' , methods = ['DELETE' ])
674
695
@login_required
675
696
def delete_evidence (eid ):
676
697
result = Authorizer (current_user ).can_user_manage_evidence (eid )
677
- db .session .delete (result ["extra" ]["evidence" ])
678
- db .session .commit ()
698
+ result ["extra" ]["evidence" ].delete ()
679
699
return jsonify ({"message" : "ok" })
680
700
681
701
@api .route ('/evidence/<int:eid>/controls' , methods = ['PUT' ])
@@ -1192,13 +1212,13 @@ def get_evidence_for_subcontrol(pid, sid):
1192
1212
@login_required
1193
1213
def add_evidence_for_subcontrol (pid , sid ):
1194
1214
result = Authorizer (current_user ).can_user_manage_project_subcontrol (sid )
1195
- data = request .get_json ()
1196
- evidence = models .Evidence (name = data ["name" ],
1197
- content = data ["content" ],description = data ["description" ],
1215
+ evidence = models .Evidence (name = request .form .get ("name" ),
1216
+ content = request .form .get ("content" ),description = request .form .get ("description" ),
1198
1217
tenant_id = result ["extra" ]["subcontrol" ].p_control .project .tenant_id ,
1199
1218
owner_id = current_user .id )
1200
1219
result ["extra" ]["subcontrol" ].evidence .append (evidence )
1201
1220
db .session .commit ()
1221
+ evidence .diff_files_with_checks (request .files .getlist ("file" ), execute = True )
1202
1222
return jsonify (evidence .as_dict ())
1203
1223
1204
1224
@api .route ('/projects/<int:pid>/subcontrols/<int:sid>/evidence/<int:eid>' , methods = ["DELETE" ])
0 commit comments