Skip to content

Commit 08f464c

Browse files
committed
Merge branch 'main' into feat-identity
2 parents 524258d + d4d799e commit 08f464c

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

48 files changed

+517
-439
lines changed

Access/access_modules/base_email_access/access.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import traceback
44

55
from Access.models import UserAccessMapping, GroupAccessMapping
6-
from BrowserStackAutomation.settings import ACCESS_APPROVE_EMAIL, PERMISSION_CONSTANTS
6+
from EnigmaAutomation.settings import ACCESS_APPROVE_EMAIL, PERMISSION_CONSTANTS
77
from bootprocess.general import emailSES
88

99
logger = logging.getLogger(__name__)
@@ -174,6 +174,9 @@ def revoke(self, user, label):
174174
def get_extra_fields(self):
175175
return []
176176

177+
def can_auto_approve(self):
178+
return False
179+
177180
# return valid access label array which will be added in db or raise exception
178181
def validate_request(self, access_labels_data, request_user, is_group=False):
179182
valid_access_label_array = []

Access/accessrequest_helper.py

Lines changed: 68 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import time
33
from 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
66
import datetime
77
import json
88
from django.db import transaction
@@ -16,6 +16,7 @@
1616
User,
1717
GroupV2,
1818
AccessV2,
19+
MembershipV2,
1920
ApprovalType,
2021
)
2122
from Access.background_task_manager import background_task, accept_request
@@ -77,6 +78,8 @@
7778
- {request_id} - Approver: {approver}"
7879
ERROR_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

8285
def 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):
511516
def 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

517525
def _validate_access_request(access_request_form, user):
@@ -551,7 +559,6 @@ def validate_access_labels(access_labels_json, access_tag):
551559

552560
def _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

675682
def 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+
881917
def create_error_response(error_msg):
882918
json_response = {}
883919
json_response["error"] = error_msg

Access/admin.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
GroupV2,
1010
MembershipV2,
1111
GroupAccessMapping,
12-
UserIdentity
12+
UserIdentity,
1313
)
1414

1515

Access/background_task_manager.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
from Access import helpers
1010
from bootprocess import general
11-
from BrowserStackAutomation.settings import AUTOMATED_EXEC_IDENTIFIER
11+
from EnigmaAutomation.settings import AUTOMATED_EXEC_IDENTIFIER
1212
from Access.models import UserAccessMapping, ApprovalType
1313
from Access import notifications
1414

@@ -60,15 +60,15 @@ def run_access_grant(request_id):
6060
user_access_mapping = UserAccessMapping.get_access_request(request_id=request_id)
6161
access_tag = user_access_mapping.access.access_tag
6262
user = user_access_mapping.user_identity.user
63-
approver = user_access_mapping.approver_1.user.username
63+
approver = user_access_mapping.approver_1.user
6464
message = ""
6565
if not user_access_mapping.user_identity.user.is_active():
6666
user_access_mapping.decline_access(decline_reason="User is not active")
6767
logger.debug(
6868
{
6969
"requestId": request_id,
7070
"status": "Declined",
71-
"by": approver,
71+
"by": approver.username,
7272
"response": message,
7373
}
7474
)
@@ -298,6 +298,7 @@ def run_accept_request(data):
298298

299299
return {"status": False}
300300

301+
301302
def accept_request(user_access_mapping):
302303
try:
303304
result = run_access_grant.delay(user_access_mapping.request_id)

0 commit comments

Comments
 (0)