Skip to content

Commit 37eef1a

Browse files
authored
Merge pull request #728 from uw-it-aca/incident/access-renewal
renew delegate access
2 parents fba0c8c + bf0e42c commit 37eef1a

File tree

3 files changed

+36
-8
lines changed

3 files changed

+36
-8
lines changed

endorsement/dao/access.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,26 @@ def store_access_record(
106106
return ar
107107

108108

109+
def renew_access(accessee, accessor, acted_as=None):
110+
now = timezone.now()
111+
ar = AccessRecord.objects.get(accessee=accessee, accessor=accessor)
112+
113+
ar.datetime_granted = now
114+
ar.acted_as = acted_as
115+
ar.datetime_emailed = None
116+
ar.datetime_notice_1_emailed = None
117+
ar.datetime_notice_2_emailed = None
118+
ar.datetime_notice_3_emailed = None
119+
ar.datetime_notice_4_emailed = None
120+
ar.datetime_renewed = now if ar.is_deleted else None
121+
ar.datetime_expired = None
122+
is_reconcile = None
123+
ar.is_deleted = None
124+
ar.save()
125+
126+
return ar
127+
128+
109129
def revoke_access(accessee, accessor, right_id, acted_as=None):
110130
remove_delegate(accessee.netid, accessor.name, right_id)
111131
return _revoke_access_model(accessee, accessor, right_id, acted_as)

endorsement/static/endorsement/js/tab/office.js

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -446,9 +446,7 @@ var ManageOfficeAccess = (function () {
446446
var context = {
447447
action: "renew",
448448
mailbox: $row.attr('data-mailbox'),
449-
delegate: $row.attr('data-delegate'),
450-
access_type: $('.access-type select option:selected', $row).val(),
451-
access_type_name: $('.access-type select option:selected', $row).text()
449+
delegate: $row.attr('data-delegate')
452450
};
453451

454452
_displayModal("#confirm_renew_modal_content", context);
@@ -459,7 +457,7 @@ var ManageOfficeAccess = (function () {
459457

460458
Button.loading($button);
461459
_modalDisable();
462-
_setAccessForDelegate(context);
460+
_updateAccessForDelegate(context);
463461
});
464462
});
465463
},

endorsement/views/api/office/access.py

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@
66
from endorsement.dao.uwnetid_supported import get_supported_resources_for_netid
77
from endorsement.dao.persistent_messages import get_persistent_messages
88
from endorsement.dao.access import (
9-
get_accessee_model, store_access, update_access, revoke_access)
9+
get_accessee_model, store_access, update_access,
10+
revoke_access, renew_access)
1011
from endorsement.dao.office import is_office_permitted, get_office_accessor
1112
from endorsement.views.rest_dispatch import (
1213
RESTDispatch, invalid_session, invalid_endorser, data_error)
@@ -99,6 +100,7 @@ def patch(self, request, *args, **kwargs):
99100
except InvalidNetID:
100101
return invalid_endorser(logger)
101102

103+
action = request.data.get('action', None)
102104
mailbox = request.data.get('mailbox', None)
103105
delegate = request.data.get('delegate', None)
104106
access_type = request.data.get('access_type', None)
@@ -111,9 +113,17 @@ def patch(self, request, *args, **kwargs):
111113
accessor = get_office_accessor(delegate)
112114

113115
try:
114-
access = update_access(
115-
accessee, accessor, previous_access_type,
116-
access_type, acted_as)
116+
if action == 'renew':
117+
access = renew_access(accessee, accessor, acted_as)
118+
return self.json_response(access.json_data())
119+
elif previous_access_type and access_type:
120+
access = update_access(
121+
accessee, accessor, previous_access_type,
122+
access_type, acted_as)
123+
else:
124+
return self.error_response(404, message="Insufficient Data")
125+
except AccessRecord.DoesNotExist:
126+
return self.error_response(404, message="Unknown Access Record")
117127
except DataFailureException as ex:
118128
return self.error_response(ex.status, message=ex.msg)
119129

0 commit comments

Comments
 (0)