22import time
33from Access .views_helper import execute_group_access , accept_request
44
5- from BrowserStackAutomation .settings import DECLINE_REASONS , MAIL_APPROVER_GROUPS
5+ from EnigmaAutomation .settings import DECLINE_REASONS , MAIL_APPROVER_GROUPS
66import datetime
77import json
88from django .db import transaction
1616 User ,
1717 GroupV2 ,
1818 AccessV2 ,
19+ MembershipV2 ,
1920 ApprovalType ,
2021)
2122from Access .background_task_manager import background_task , accept_request
7778 - {request_id} - Approver: {approver}"
7879ERROR_DECLINING_REQUEST_LOG_MSG = "Error in Decline of request {request_id}. \
7980 Error:{error} .Please contact admin."
81+ ERROR_MARKING_RESOLVE_FAIL_LOG_MSG = "Error in resolving request {request_id}. \
82+ Error:{error} ."
8083
8184
8285def get_request_access (request ):
@@ -224,7 +227,7 @@ def get_decline_access_request(request, access_type, request_id):
224227 UserAccessMapping .get_pending_access_mapping (request_id = value )
225228 )
226229 request_ids .extend (current_ids )
227- access_type = access_type . rsplit ( "-" , 1 )[ 0 ]
230+ access_type = "moduleAccess"
228231 elif access_type == "clubGroupAccess" :
229232 for value in [request_id ]: # ready for bulk decline
230233 return_ids .append (value )
@@ -238,6 +241,7 @@ def get_decline_access_request(request, access_type, request_id):
238241 access_type = "groupAccess"
239242 else :
240243 request_ids = [request_id ]
244+
241245 for current_request_id in request_ids :
242246 if access_type == "groupAccess" :
243247 response = decline_group_access (request , current_request_id , reason )
@@ -283,9 +287,11 @@ def get_pending_accesses_from_modules(access_user):
283287 process_group_requests (pending_accesses ["group_requests" ], group_requests )
284288
285289 logger .info (
286- "Time to fetch pending requests of access module: %s - %s "
287- % access_module_tag ,
288- str (time .time () - access_module_start_time ),
290+ "Time to fetch pending requests of access module: %s - %s " %
291+ (
292+ access_module_tag ,
293+ str (time .time () - access_module_start_time )
294+ ),
289295 )
290296
291297 return individual_requests , list (group_requests .values ())
@@ -297,7 +303,7 @@ def process_individual_requests(
297303 if len (individual_pending_requests ):
298304 clubbed_requests = {}
299305 for accessrequest in individual_pending_requests :
300- club_id = accessrequest ["requestId" ].rsplit ("_" , 1 )[0 ]
306+ club_id = accessrequest ["requestId" ].rsplit ("_" )[0 ]
301307 if club_id not in clubbed_requests :
302308 clubbed_requests [club_id ] = {
303309 "club_id" : club_id ,
@@ -326,7 +332,7 @@ def process_group_requests(group_pending_requests, group_requests):
326332 club_id = (
327333 accessrequest ["groupName" ]
328334 + "-"
329- + accessrequest ["requestId" ].rsplit ("-" , 1 )[- 1 ].rsplit ("_" , 1 )[0 ]
335+ + accessrequest ["requestId" ].rsplit ("-" , 1 )[- 1 ].rsplit ("_" )[0 ]
330336 )
331337 needs_access_approve = GroupV2 .objects .get (
332338 name = accessrequest ["groupName" ], status = "Approved"
@@ -399,17 +405,16 @@ def create_request(auth_user, access_request_form):
399405 }
400406
401407 access_module = helper .get_available_access_modules ()[access_tag ]
402- module_access_labels = access_module .validate_request (
403- access_labels , auth_user , is_group = False
404- )
405-
406408 extra_field_labels = get_extra_field_labels (access_module )
407-
408409 if extra_fields and extra_field_labels :
409410 for field in extra_field_labels :
410- module_access_labels [0 ][field ] = extra_fields [0 ]
411+ access_labels [0 ][field ] = extra_fields [0 ]
411412 extra_fields = extra_fields [1 :]
412413
414+ module_access_labels = access_module .validate_request (
415+ access_labels , auth_user , is_group = False
416+ )
417+
413418 for index2 , access_label in enumerate (module_access_labels ):
414419 request_id = request_id + "_" + str (index2 )
415420 access_create_error = _create_access (
@@ -511,7 +516,10 @@ def get_extra_field_labels(access_module):
511516def get_extra_fields (access_request ):
512517 if "extraFields" in access_request :
513518 return access_request ["extraFields" ]
514- return []
519+ elif "extraFields[]" in access_request :
520+ return [access_request ["extraFields[]" ]]
521+ else :
522+ return []
515523
516524
517525def _validate_access_request (access_request_form , user ):
@@ -551,7 +559,6 @@ def validate_access_labels(access_labels_json, access_tag):
551559
552560def _get_approver_permissions (access_tag , access_label = None ):
553561 json_response = {}
554-
555562 access_module = helper .get_available_access_module_from_tag (access_tag )
556563 approver_permissions = []
557564 approver_permissions = access_module .fetch_approver_permissions (access_label )
@@ -583,9 +590,9 @@ def accept_user_access_requests(auth_user, request_id):
583590 )
584591 return json_response
585592
586- requester = access_mapping .user_identity .user . email
587- if auth_user .username == requester :
588- json_response ["error" ] = USER_REQUEST_PERMISSION_DENIED_ERR_MSG
593+ requester = access_mapping .user_identity .user
594+ if auth_user .user == requester :
595+ json_response ["error" ] = SELF_APPROVAL_ERROR_MSG
589596 return json_response
590597
591598 access_label = access_mapping .access .access_label
@@ -674,37 +681,50 @@ def run_accept_request_task(
674681
675682def decline_individual_access (request , access_type , request_id , reason ):
676683 json_response = {}
677- access_mapping = UserAccessMapping .get_access_request (request_id )
684+ access_mapping = {}
685+ decline_new_group = False
686+ if access_type == "declineNewGroup" :
687+ access_mapping = GroupV2 .get_pending_group (request_id )
688+ decline_new_group = True
689+ else :
690+ access_mapping = UserAccessMapping .get_access_request (request_id )
691+ access_type = access_mapping .access .access_tag
692+
678693 if not is_request_valid (request_id , access_mapping ):
679694 json_response ["error" ] = USER_REQUEST_IN_PROCESS_ERR_MSG .format (
680695 request_id = request_id ,
681696 )
682697 return json_response
683698
684- json_response = validate_approver_permissions (access_mapping , access_type , request )
685- if "error" in json_response :
686- return json_response
699+ if not decline_new_group :
700+ json_response = validate_approver_permissions (access_mapping , access_type , request )
701+ if "error" in json_response :
702+ return json_response
687703
688704 with transaction .atomic ():
689705 access_mapping .decline_access (reason )
690706 if hasattr (access_mapping , "approver_1" ):
691- access_mapping .decline_reason = reason
692707 if access_mapping .approver_1 is not None :
693708 access_mapping .approver_2 = request .user .user
694709 else :
695710 access_mapping .approver_1 = request .user .user
696711 else :
697- access_mapping .reason = reason
698- access_mapping .approver = request .user .username
712+ access_mapping .approver = request .user .user
699713
700714 access_mapping .save ()
701715
702- access_module = helper .get_available_access_module_from_tag (access_type )
703- access_labels = [access_mapping .access .access_label ]
704- description = access_module .combine_labels_desc (access_labels )
705- notifications .send_mail_for_request_decline (
706- request , description , request_id , reason , access_type
707- )
716+ if not decline_new_group :
717+ access_module = helper .get_available_access_module_from_tag (access_type )
718+ access_labels = [access_mapping .access .access_label ]
719+ description = access_module .combine_labels_desc (access_labels )
720+ notifications .send_mail_for_request_decline (
721+ request , description , request_id , reason , access_type
722+ )
723+ else :
724+ MembershipV2 .update_membership (access_mapping , reason )
725+ notifications .send_mail_for_request_decline (
726+ request , "Group Creation" , request_id , reason , access_type
727+ )
708728
709729 logger .debug (
710730 USER_REQUEST_DECLINE_MSG .format (
@@ -821,7 +841,7 @@ def decline_group_access(request, request_id, reason):
821841 access_type = group_mapping .access .access_tag
822842
823843 json_response = validate_approver_permissions (
824- group_mapping , access_type , request , request_id
844+ group_mapping , access_type , request
825845 )
826846 if "error" in json_response :
827847 return json_response
@@ -878,6 +898,22 @@ def decline_group_access(request, request_id, reason):
878898 )
879899
880900
901+ def run_ignore_failure_task (auth_user , access_mapping , request_id , selector ):
902+ try :
903+ if selector == "decline" :
904+ access_mapping .decline_access ()
905+ elif selector == "approve" :
906+ access_mapping .approve_access ()
907+ notifications .send_mail_for_request_resolve (auth_user , selector , request_id )
908+ except Exception as e :
909+ logger .exception (e )
910+ return create_error_response (
911+ error_msg = ERROR_MARKING_RESOLVE_FAIL_LOG_MSG .format (
912+ request_id = request_id , error = str (str (e ))
913+ )
914+ )
915+
916+
881917def create_error_response (error_msg ):
882918 json_response = {}
883919 json_response ["error" ] = error_msg
0 commit comments