Skip to content

Commit 447e2eb

Browse files
committed
fix: fixes group flow
1 parent bddc5a9 commit 447e2eb

File tree

8 files changed

+34
-136
lines changed

8 files changed

+34
-136
lines changed

Access/accessrequest_helper.py

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,7 @@ def get_decline_access_request(request, access_type, request_id):
225225
UserAccessMapping.get_pending_access_mapping(request_id=value)
226226
)
227227
request_ids.extend(current_ids)
228-
access_type = access_type.rsplit("-", 1)[0]
228+
access_type = "moduleAccess"
229229
elif access_type == "clubGroupAccess":
230230
for value in [request_id]: # ready for bulk decline
231231
return_ids.append(value)
@@ -239,6 +239,7 @@ def get_decline_access_request(request, access_type, request_id):
239239
access_type = "groupAccess"
240240
else:
241241
request_ids = [request_id]
242+
242243
for current_request_id in request_ids:
243244
if access_type == "groupAccess":
244245
response = decline_group_access(request, current_request_id, reason)
@@ -300,7 +301,7 @@ def process_individual_requests(
300301
if len(individual_pending_requests):
301302
clubbed_requests = {}
302303
for accessrequest in individual_pending_requests:
303-
club_id = accessrequest["requestId"].rsplit("_", 1)[0]
304+
club_id = accessrequest["requestId"].rsplit("_")[0]
304305
if club_id not in clubbed_requests:
305306
clubbed_requests[club_id] = {
306307
"club_id": club_id,
@@ -329,7 +330,7 @@ def process_group_requests(group_pending_requests, group_requests):
329330
club_id = (
330331
accessrequest["groupName"]
331332
+ "-"
332-
+ accessrequest["requestId"].rsplit("-", 1)[-1].rsplit("_", 1)[0]
333+
+ accessrequest["requestId"].rsplit("-", 1)[-1].rsplit("_")[0]
333334
)
334335
needs_access_approve = GroupV2.objects.get(
335336
name=accessrequest["groupName"], status="Approved"
@@ -556,7 +557,6 @@ def validate_access_labels(access_labels_json, access_tag):
556557

557558
def _get_approver_permissions(access_tag, access_label=None):
558559
json_response = {}
559-
560560
access_module = helper.get_available_access_module_from_tag(access_tag)
561561
approver_permissions = []
562562
approver_permissions = access_module.fetch_approver_permissions(access_label)
@@ -588,9 +588,9 @@ def accept_user_access_requests(auth_user, request_id):
588588
)
589589
return json_response
590590

591-
requester = access_mapping.user_identity.user.email
592-
if auth_user.username == requester:
593-
json_response["error"] = USER_REQUEST_PERMISSION_DENIED_ERR_MSG
591+
requester = access_mapping.user_identity.user
592+
if auth_user.user == requester:
593+
json_response["error"] = SELF_APPROVAL_ERROR_MSG
594594
return json_response
595595

596596
access_label = access_mapping.access.access_label
@@ -686,6 +686,7 @@ def decline_individual_access(request, access_type, request_id, reason):
686686
decline_new_group = True
687687
else:
688688
access_mapping = UserAccessMapping.get_access_request(request_id)
689+
access_type = access_mapping.access.access_tag
689690

690691
if not is_request_valid(request_id, access_mapping):
691692
json_response["error"] = USER_REQUEST_IN_PROCESS_ERR_MSG.format(
@@ -838,7 +839,7 @@ def decline_group_access(request, request_id, reason):
838839
access_type = group_mapping.access.access_tag
839840

840841
json_response = validate_approver_permissions(
841-
group_mapping, access_type, request, request_id
842+
group_mapping, access_type, request
842843
)
843844
if "error" in json_response:
844845
return json_response

Access/background_task_manager.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -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
)

Access/group_helper.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -490,10 +490,11 @@ def add_user_to_group(request):
490490
}
491491

492492
else:
493+
membership = MembershipV2.get_membership(membership_id=membership_id)
493494
notifications.send_mulitple_membership_accepted_notification(
494495
users_added,
495496
data["groupName"][0],
496-
data["memberReason"][0],
497+
membership,
497498
)
498499
if len(selected_users) - len(users_added) == 0:
499500
context = {}
@@ -672,7 +673,7 @@ def save_group_access_request(form_data, auth_user):
672673
)
673674

674675
request_id = (
675-
auth_user.username
676+
group.name
676677
+ "-"
677678
+ access_tag
678679
+ "-"

Access/models.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -877,7 +877,7 @@ def decline_access(self, decline_reason=None):
877877
def approve_access(self):
878878
self.status = "Approved"
879879
self.save()
880-
880+
881881
@staticmethod
882882
def get_by_id(request_id):
883883
return UserAccessMapping.objects.get(request_id=request_id)
@@ -1076,6 +1076,9 @@ def update_access_status(self, current_status):
10761076
def is_self_approval(self, approver):
10771077
return self.requested_by == approver
10781078

1079+
def is_already_processed(self):
1080+
return self.status in ['Declined','Approved','Processing','Revoked']
1081+
10791082

10801083
class AccessV2(models.Model):
10811084
access_tag = models.CharField(max_length=255)

Access/notifications.py

Lines changed: 5 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -70,31 +70,17 @@ def send_membership_accepted_notification(user, group, membership):
7070
destination.append(user.email)
7171
general.emailSES(destination, subject, body)
7272

73-
def send_mulitple_membership_accepted_notification(user_names, group, membership):
74-
subject = MEMBERSHIP_ACCEPTED_SUBJECT.format(user_names, group.name)
73+
def send_mulitple_membership_accepted_notification(user_names, group_name, membership):
74+
subject = MEMBERSHIP_ACCEPTED_SUBJECT.format(user_names, group_name)
7575
body = helpers.generateStringFromTemplate(
7676
filename="membershipAcceptedEmailBody.html",
7777
user_name= ",".join(user_names),
78-
group_name=group.name,
79-
approver=membership.approver.name,
80-
)
81-
destination = []
82-
destination.append(membership.requested_by.email)
83-
destination = destination + user_names
84-
general.emailSES(destination, subject, body)
85-
86-
87-
def send_mulitple_membership_accepted_notification(user_names, group, membership):
88-
subject = MEMBERSHIP_ACCEPTED_SUBJECT.format(user_names, group.name)
89-
body = helpers.generateStringFromTemplate(
90-
filename="membershipAcceptedEmailBody.html",
91-
user_name=",".join(user_names),
92-
group_name=group.name,
78+
group_name=group_name,
9379
approver=membership.approver.name,
9480
)
9581
destination = []
9682
destination.append(membership.requested_by.email)
97-
destination = destination + user_names
83+
destination.append(user_names)
9884
general.emailSES(destination, subject, body)
9985

10086

@@ -176,7 +162,7 @@ def send_mail_for_request_decline(
176162

177163
def send_mail_for_request_granted_failure(user, approver, access_type, request_id):
178164
destination = [user.email]
179-
destination.extend(approver.email)
165+
destination.append(approver.email)
180166
subject = USER_ACCESS_REQUEST_GRANT_FAILURE_SUBJECT.format(
181167
str(user.email), access_type.upper(), request_id
182168
)

Access/views.py

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -351,10 +351,9 @@ def accept_bulk(request, selector):
351351
input_vals = request.GET.getlist("requestId")
352352
user = request.user.user
353353
is_access_approver = user.has_permission("ACCESS_APPROVE")
354-
request_ids, return_ids = _get_request_ids_for_bulk_processing(
354+
request_ids, return_ids, selector = _get_request_ids_for_bulk_processing(
355355
input_vals, selector
356356
)
357-
358357
for value in request_ids:
359358
request_id = value
360359
if selector == "groupNew" and is_access_approver:
@@ -367,7 +366,7 @@ def accept_bulk(request, selector):
367366
)
368367
elif selector == "groupAccess":
369368
json_response = accept_group_access(request.user, request_id)
370-
elif selector.endswith("-club"):
369+
elif selector == "moduleAccess":
371370
json_response = accept_user_access_requests(request.user, request_id)
372371
else:
373372
raise ValidationError("Invalid request")
@@ -403,6 +402,7 @@ def _get_request_ids_for_bulk_processing(posted_request_ids, selector):
403402
UserAccessMapping.get_pending_access_mapping(request_id=value)
404403
)
405404
access_request_ids.extend(current_ids)
405+
selector = "moduleAccess"
406406
elif selector == "clubGroupAccess":
407407
for value in input_vals:
408408
return_ids.append(value)
@@ -416,7 +416,7 @@ def _get_request_ids_for_bulk_processing(posted_request_ids, selector):
416416
selector = "groupAccess"
417417
else:
418418
access_request_ids = input_vals
419-
return access_request_ids, return_ids
419+
return access_request_ids, return_ids, selector
420420

421421

422422
@login_required
@@ -626,7 +626,7 @@ def individual_resolve(request):
626626
request_ids = request.GET.getlist('requestId')
627627
if not request_ids:
628628
raise Exception("Request id not found in the request")
629-
629+
630630
for request_id in request_ids:
631631
user_access_mapping = UserAccessMapping.get_by_id(request_id)
632632
if user_access_mapping.status.lower() in ["grantfailed", "approved"]:
@@ -639,4 +639,3 @@ def individual_resolve(request):
639639
logger.exception(str(e))
640640
json_response['error'] = {'error_msg': "Bad request", 'msg': "Error in request not found OR Invalid request type"}
641641
return render(request,'BSOps/accessStatus.html',json_response)
642-

templates/BSOps/group_access_list_tabs/users_list_tab.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@
7474
});
7575

7676
function userRemoveConfirm(membership_id){
77-
$("#remove-details").html("<h4>Confirm User removal "+ membership_id +"</h4>")
77+
$("#remove-details").html("<h4>Confirm removal of user "+ membership_id +"</h4>")
7878
button_elem = document.getElementsByName("final-remove-button")[0]
7979
button_elem.id = membership_id
8080
}
@@ -91,7 +91,7 @@ <h4 class="modal-title"></h4>
9191
<!-- Modal body -->
9292
<div class="modal-body generic-access-modal-body">
9393
<div id="remove-details"></div><br>
94-
<button class="btn btn-danger user-remove-button" name="final-remove-button" id="">Confirm Offboarding</button></a>
94+
<button class="btn btn-danger user-remove-button" name="final-remove-button" id="">Confirm</button></a>
9595
</div>
9696
</div>
9797
</div>

templates/BSOps/pendingRequests.html

Lines changed: 4 additions & 96 deletions
Original file line numberDiff line numberDiff line change
@@ -366,98 +366,6 @@ <h2 id="declineHeading"></h2>
366366

367367
<div class="wrapper">
368368
<div class="panel-group" id="pending-accordion">
369-
{% if repoRequest|length %}
370-
<div class="panel panel-default">
371-
<div class="panel-heading page-header">
372-
<div class="container-fluid">
373-
<h2 class="h5 no-margin-bottom"><a data-toggle="collapse" href="#collapse11"
374-
data-parent="#pending-accordion">Github Repo Creation Pending : </a>
375-
<span class="h6 badge badge-light">{{ repoRequest|length }}</span>
376-
377-
</h2>
378-
</div>
379-
</div>
380-
<div id="collapse11" class="panel-collapse collapse">
381-
<div class="panel-body">
382-
{% if repoRequest %}
383-
<div class="page-header bulkHeader mx-4">
384-
<div class="row">
385-
<div class="checkbox col-1">
386-
<label>
387-
<!-- checkbox classes should also contain this value -->
388-
<input class="bulkAcceptAll-checkbox" value="github" type="checkbox">
389-
<span class="cr"><i class="cr-icon fa fa-check"></i></span>
390-
</label>
391-
</div>
392-
<div class="col-9">
393-
<h2 class="h4">Bulk Operation</h2>
394-
</div>
395-
<div class="col-2 pl-5">
396-
<!-- checkbox classes should also contain this id -->
397-
<button class="card-link btn btn-primary bulkAccept-button" id="github">Bulk
398-
Accept</button>
399-
</div>
400-
</div>
401-
</div>
402-
{% endif %}
403-
404-
405-
{% for request in repoRequest %}
406-
<div class="row">
407-
<div class="card col-xs-12 col-md-12">
408-
<div class="card-body" style="color:white;">
409-
<div class="row">
410-
<div class="checkbox col-1 pl-1">
411-
<label id="{{ request.requestId }}-checkbox">
412-
<input class="github" type="checkbox" value="{{ request.requestId }}">
413-
<span class="cr"><i class="cr-icon fa fa-check"></i></span>
414-
</label>
415-
</div>
416-
<div class="col-8">
417-
<div class="row">
418-
<div class="col-6">
419-
<h4 class="card-title">{{request.requestId}}</h4>
420-
<p>Requested By: {{request.requester}}</p>
421-
<p>Requested On: {{ request.requested_on }} UTC</p>
422-
<br>
423-
</div>
424-
<div class="col-6">
425-
<p class="text-success">Github Repo Details</p>
426-
<p>Git user name: {{request.requestInfo.gitusername}}</p>
427-
<p>Repo Name: {{request.requestInfo.githubRepoName}}</p>
428-
<p>Repo Description: {{request.requestInfo.githubRepoDesc}}</p>
429-
<p>Repo type: {{request.requestInfo.githubRepoType}}</p>
430-
<p>Master Branch Protection:
431-
{{request.requestInfo.masterBranchProtection}}</p>
432-
<p>README enabled: {{request.requestInfo.readmeEnabled}}</p>
433-
<p>Deny Default Access: {{request.requestInfo.denyDefaultAccess}}</p>
434-
</div>
435-
</div>
436-
</div>
437-
<div class="col-3">
438-
<div class="row float-right" id="{{ request.requestId }}-action">
439-
<button class="card-link btn btn-primary accept-button" id="github"
440-
value="{{request.requestId}}">Accept</button>
441-
<button class="card-link btn btn-danger decline-button"
442-
id="github/{{request.requestId}}"
443-
value="{{request.requestId}}">Decline</button>
444-
</div>
445-
</div>
446-
</div>
447-
</div>
448-
</div>
449-
</div>
450-
{% endfor %}
451-
{% if not repoRequest %}
452-
<div class="page-header mx-3">
453-
<p>None pending</p>
454-
</div>
455-
{% endif %}
456-
</div>
457-
</div>
458-
</div>
459-
{% endif %}
460-
461369
<!-- group stuff start -->
462370
{% if newGroupPending|length %}
463371
<div class="panel panel-default">
@@ -709,8 +617,8 @@ <h4 class="card-title">{{group.group_club_id}}</h4>
709617
<h6 class="text-warning">Approving EKS access also creates aws account for
710618
the user if it does not exists.</h6>
711619
{% endif %}
712-
<p><b style="color: yellow;">{{ eachAccessDetails.accessType }} - </b> {{
713-
eachAccessDetails.accessCategory }}</p>
620+
<p><b style="color: yellow;">{{ eachAccessDetails.accessType }} - </b>
621+
{{ eachAccessDetails.accessCategory }}</p>
714622
{% if eachAccessDetails.accessMeta %}
715623
<p>
716624
<table class="table" style="color: white;">
@@ -846,10 +754,10 @@ <h5>Accesses</h5>
846754
<div id="{{ accessData.requestId }}-action">
847755
{% if eachRequest.accessData|length > 1 %}
848756
<button class="card-link btn btn-primary accept-button"
849-
id="{{ eachRequest.access_tag }}"
757+
id="moduleAccess"
850758
value="{{ accessData.requestId }}">Accept</button>
851759
<button class="card-link btn btn-danger decline-button"
852-
id="{{ eachRequest.access_tag }}/{{ accessData.requestId }}"
760+
id="moduleAccess/{{ accessData.requestId }}"
853761
value="{{ accessData.requestId }}">Decline</button>
854762
{% endif %}
855763
</div>

0 commit comments

Comments
 (0)