2222 get_decline_access_request ,
2323 accept_group_access ,
2424 run_accept_request_task ,
25+ run_ignore_failure_task ,
2526)
2627from Access .models import User , UserAccessMapping , GroupAccessMapping
2728
@@ -608,7 +609,9 @@ def mark_revoked(request):
608609 for mapping_object in requests :
609610 logger .info (
610611 "Marking access revoke - %s by user %s" ,
611- mapping_object .request_id , request .user .user )
612+ mapping_object .request_id ,
613+ request .user .user ,
614+ )
612615 mapping_object .revoke (revoker = request .user .user )
613616 success_list .append (mapping_object .request_id )
614617 json_response ["msg" ] = "Success"
@@ -618,23 +621,123 @@ def mark_revoked(request):
618621 json_response ["error" ] = "Error Revoking User Access"
619622 return JsonResponse (json_response , status = 403 )
620623
624+
621625def individual_resolve (request ):
622- json_response = {"status_list" :[]}
626+ json_response = {"status_list" : []}
623627 try :
624- request_ids = request .GET .getlist (' requestId' )
628+ request_ids = request .GET .getlist (" requestId" )
625629 if not request_ids :
626630 raise Exception ("Request id not found in the request" )
627-
631+
628632 for request_id in request_ids :
629- user_access_mapping = UserAccessMapping .get_by_id (request_id )
633+ user_access_mapping = UserAccessMapping .get_access_request (request_id )
630634 if user_access_mapping .status .lower () in ["grantfailed" , "approved" ]:
631- response = run_accept_request_task (False , user_access_mapping , request .user , user_access_mapping .request_id , user_access_mapping .access .access_label )
635+ response = run_accept_request_task (
636+ False ,
637+ user_access_mapping ,
638+ request .user ,
639+ user_access_mapping .request_id ,
640+ user_access_mapping .access .access_label ,
641+ )
632642 json_response ["status_list" ] += response ["status" ]
633643 else :
634- json_response ["status_list" ].append ({'title' : 'The Request (' + request_id + ') is already resolved.' , 'msg' : 'The request is already in final state.' })
635- return render (request ,'BSOps/accessStatus.html' ,json_response )
644+ json_response ["status_list" ].append (
645+ {
646+ "title" : "The Request ("
647+ + request_id
648+ + ") is already resolved." ,
649+ "msg" : "The request is already in final state." ,
650+ }
651+ )
652+ return render (request , "BSOps/accessStatus.html" , json_response )
636653 except Exception as e :
637654 logger .exception (str (e ))
638- json_response ['error' ] = {'error_msg' : "Bad request" , 'msg' : "Error in request not found OR Invalid request type" }
639- return render (request ,'BSOps/accessStatus.html' ,json_response )
640-
655+ json_response ["error" ] = {
656+ "error_msg" : "Bad request" ,
657+ "msg" : "Error in request not found OR Invalid request type" ,
658+ }
659+ return render (request , "BSOps/accessStatus.html" , json_response )
660+
661+
662+ @login_required
663+ @user_with_permission ([PERMISSION_CONSTANTS ["DEFAULT_APPROVER_PERMISSION" ]])
664+ def ignore_failure (request , selector ):
665+ try :
666+ json_response = {"status_list" : []}
667+ request_ids = request .GET .getlist ("requestId" )
668+ for request_id in request_ids :
669+ user_access_mapping = UserAccessMapping .get_access_request (request_id )
670+ if user_access_mapping .status .lower () in ["grantfailed" , "revokefailed" ]:
671+ run_ignore_failure_task (
672+ request .user ,
673+ user_access_mapping ,
674+ user_access_mapping .request_id ,
675+ selector ,
676+ )
677+ json_response ["status_list" ].append (
678+ {
679+ "title" : "The Request ("
680+ + request_id
681+ + ") is now being ignored. Mark - "
682+ + selector ,
683+ "msg" : "A email will be sent after the requested access is ignored" ,
684+ }
685+ )
686+ else :
687+ logger .debug ("Cannot ignore " + request_id )
688+ json_response ["status_list" ].append (
689+ {
690+ "title" : "The Request ("
691+ + request_id
692+ + ") is already resolved." ,
693+ "msg" : "The request is already in final state." ,
694+ }
695+ )
696+ return render (request , "BSOps/accessStatus.html" , json_response )
697+ except Exception as e :
698+ logger .debug ("Error in request not found OR Invalid request type" )
699+ logger .exception (e )
700+ json_response = {}
701+ json_response ["error" ] = {
702+ "error_msg" : str (e ),
703+ "msg" : "Error in request not found OR Invalid request type" ,
704+ }
705+ return render (request , "BSOps/accessStatus.html" , json_response )
706+
707+
708+ @login_required
709+ @user_with_permission ([PERMISSION_CONSTANTS ["DEFAULT_APPROVER_PERMISSION" ]])
710+ def resolve_bulk (request ):
711+ try :
712+ json_response = {"status_list" : []}
713+ request_ids = request .GET .getlist ("requestId" )
714+ for request_id in request_ids :
715+ user_access_mapping = UserAccessMapping .get_access_request (request_id )
716+ if user_access_mapping .status .lower () in ["grantfailed" ]:
717+ response = run_accept_request_task (
718+ False ,
719+ user_access_mapping ,
720+ request .user ,
721+ user_access_mapping .request_id ,
722+ user_access_mapping .access .access_label ,
723+ )
724+ json_response ["status_list" ] += response ["status" ]
725+ else :
726+ json_response ["status_list" ].append (
727+ {
728+ "title" : "The Request ("
729+ + request_id
730+ + ") is already resolved." ,
731+ "msg" : "The request is already in final state." ,
732+ }
733+ )
734+ return render (request , "BSOps/accessStatus.html" , json_response )
735+ except Exception as e :
736+ logger .debug ("Error in request not found OR Invalid request type" )
737+ logger .exception (e )
738+ json_response = {}
739+ json_response ["error" ] = {
740+ "error_msg" : str (e ),
741+ "msg" : "Error in request not found OR Invalid request type" ,
742+ }
743+ return render (request , "BSOps/accessStatus.html" , json_response )
0 commit comments