Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 37 additions & 0 deletions Access/accessrequest_helper.py
Original file line number Diff line number Diff line change
Expand Up @@ -729,6 +729,41 @@ def run_accept_request_task(
return json_response


def decline_group_membership(request, access_type, request_id, reason):
""" Decline group membership """
json_response = {}
membership = MembershipV2.get_membership(request_id)

if not membership:
json_response["error"] = INVALID_REQUEST_ERROR_MSG
return json_response

if not is_request_valid(request_id, membership):
json_response["error"] = USER_REQUEST_IN_PROCESS_ERR_MSG.format(
request_id=request_id,
)
return json_response

membership.decline(reason, request.user.user)

notifications.send_mail_for_request_decline(
request, "Membership Creation", request_id, reason, access_type
)

logger.debug(
USER_REQUEST_DECLINE_MSG.format(
request_id=request_id,
decline_reason=reason,
)
)
json_response = {}
json_response["msg"] = USER_REQUEST_DECLINE_MSG.format(
request_id=request_id,
decline_reason=reason,
)
return json_response


def decline_individual_access(request, access_type, request_id, reason):
""" Decline individual access """
json_response = {}
Expand All @@ -737,6 +772,8 @@ def decline_individual_access(request, access_type, request_id, reason):
if access_type == "declineNewGroup":
access_mapping = GroupV2.get_pending_group(request_id)
decline_new_group = True
elif access_type == "declineMember":
return decline_group_membership(request, access_type, request_id, reason)
else:
access_mapping = UserAccessMapping.get_access_request(request_id)
access_type = access_mapping.access.access_tag
Expand Down
9 changes: 9 additions & 0 deletions Access/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -435,6 +435,15 @@ def approve_membership(membership_id, approver):
membership = MembershipV2.objects.get(membership_id=membership_id)
membership.approve(approver=approver)

def decline(self, reason, decliner):
self.status = "Declined"
self.decline_reason = reason
self.approver = decliner
self.save()

def is_already_processed(self):
return self.status in ["Declined", "Approved", "Processing", "Revoked"]

def revoke_membership(self):
self.status = "Revoked"
self.save()
Expand Down
1 change: 1 addition & 0 deletions Access/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -424,6 +424,7 @@ def _get_request_ids_for_bulk_processing(posted_request_ids, selector):


@login_required
@user_any_approver
def decline_access(request, access_type, request_id):
"""Decline an access request.

Expand Down