Skip to content

Commit 706d611

Browse files
committed
Merge branch 'develop' into task/authoritative-msca-delegation
2 parents 07e2e79 + 1d4bc56 commit 706d611

File tree

3 files changed

+52
-22
lines changed

3 files changed

+52
-22
lines changed

endorsement/static/endorsement/js/notify.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ var Notify = (function () {
6666
},
6767

6868
error: function (msg) {
69-
_notify(msg, 'alert-danger', 7000);
69+
_notify(msg, 'alert-danger', 10000);
7070
},
7171

7272
warning: function (msg) {

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

Lines changed: 30 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -65,12 +65,12 @@ var ManageOfficeAccess = (function () {
6565
_confirmNetidRenewModal($row);
6666
}).on('click', 'input.access-conflict', function (e) {
6767
var $this = $(this),
68-
$button = $this.closest('div.row').find('button#access_resolve');
68+
$button = $this.closest('td').find('button#access_resolve');
6969

7070
$button.prop('disabled', false);
7171
}).on('click', 'button#access_resolve', function (e) {
7272
var $this = $(this),
73-
$checked = $this.closest('div.row').find('input.access-conflict:checked'),
73+
$checked = $this.closest('td').find('input.access-conflict:checked'),
7474
mailbox = $this.attr('data-mailbox'),
7575
delegate = $this.attr('data-delegate'),
7676
right = $checked.val();
@@ -115,7 +115,7 @@ var ManageOfficeAccess = (function () {
115115
}).on('endorse:OfficeAccessResolveSuccess', function (e, data) {
116116
_resolvedAccessModal(data);
117117
}).on('endorse:OfficeAccessResolveFailure', function (e, data) {
118-
alert('Access Resolution failure: ' + data);
118+
Notify.error('Access Resolve Error: ' + data);
119119
}).on('endorse:OfficeAccessTypesSuccess', function (e) {
120120
_displayOfficeAccessTypes();
121121
}).on('endorse:OfficeAccessTypesFailure', function (e, data) {
@@ -252,7 +252,7 @@ var ManageOfficeAccess = (function () {
252252
$panel.trigger('endorse:OfficeDelegatableSuccess', [results]);
253253
},
254254
error: function(xhr, status, error) {
255-
$panel.trigger('endorse:OfficeDelegatableFailure', [error]);
255+
$panel.trigger('endorse:OfficeDelegatableFailure', [_error_message(xhr)]);
256256
}
257257
});
258258
},
@@ -286,7 +286,7 @@ var ManageOfficeAccess = (function () {
286286
$panel.trigger('endorse:OfficeValidateNetIDsSuccess', [results]);
287287
},
288288
error: function(xhr, status, error) {
289-
$panel.trigger('endorse:OfficeValidateNetIDsFailure', [error]);
289+
$panel.trigger('endorse:OfficeValidateNetIDsFailure', [_error_message(xhr)]);
290290
}
291291
});
292292
},
@@ -642,7 +642,7 @@ var ManageOfficeAccess = (function () {
642642
$panel.trigger('endorse:OfficeDelegateAccessSuccess', [results]);
643643
},
644644
error: function(xhr, status, error) {
645-
$panel.trigger('endorse:OfficeDelegateAccessFailure', [context, error]);
645+
$panel.trigger('endorse:OfficeDelegateAccessFailure', [context, _error_message(xhr)]);
646646
}
647647
});
648648
},
@@ -662,7 +662,7 @@ var ManageOfficeAccess = (function () {
662662
$panel.trigger('endorse:OfficeDelegateRevokeSuccess', [results]);
663663
},
664664
error: function(xhr, status, error) {
665-
$panel.trigger('endorse:OfficeDelegateRevokeFailure', [context, error]);
665+
$panel.trigger('endorse:OfficeDelegateRevokeFailure', [context, _error_message(xhr)]);
666666
}
667667
});
668668
},
@@ -733,7 +733,7 @@ var ManageOfficeAccess = (function () {
733733
$event_panel.trigger('endorse:OfficeAccessTypesSuccess');
734734
},
735735
error: function(xhr, status, error) {
736-
$event_panel.trigger('endorse:OfficeAccessTypesFailure', [error]);
736+
$event_panel.trigger('endorse:OfficeAccessTypesFailure', [_error_message(xhr)]);
737737
}
738738
});
739739
},
@@ -757,11 +757,32 @@ var ManageOfficeAccess = (function () {
757757
$panel.trigger('endorse:OfficeAccessResolveSuccess', [results]);
758758
},
759759
error: function(xhr, status, error) {
760-
$panel.trigger('endorse:OfficeAccessResolveFailure', [error]);
760+
$panel.trigger('endorse:OfficeAccessResolveFailure', [_error_message(xhr)]);
761761
}
762762
});
763763

764764
},
765+
_error_message = function (xhr) {
766+
var xhr_content_type = xhr.getResponseHeader('content-type');
767+
768+
if (xhr_content_type === 'application/json') {
769+
if (xhr.responseJSON.hasOwnProperty('error')) {
770+
var error = xhr.responseJSON.error;
771+
772+
if (typeof(error) === 'string') {
773+
return error;
774+
} else if (typeof(error) === 'object') {
775+
if (error.hasOwnProperty('error')) {
776+
return error.error;
777+
} else if (error.hasOwnProperty('msg')) {
778+
return error.msg;
779+
}
780+
}
781+
}
782+
}
783+
784+
return xhr.statusText;
785+
},
765786
_scrollNetIDIntoView = function (netid) {
766787
Scroll.scrollToNetid(netid, '.office-access-table');
767788
},

endorsement/views/api/office/access.py

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
from endorsement.util.auth import is_support_user
1717
from uw_msca.access_rights import get_access_rights
1818
from restclients_core.exceptions import DataFailureException
19+
import json
1920
import logging
2021

2122

@@ -95,10 +96,7 @@ def post(self, request, *args, **kwargs):
9596
access = store_access(
9697
accessee, accessor, access_type, acted_as)
9798
except DataFailureException as ex:
98-
logger.error(
99-
f"Access.post {ex.url} FAILURE data: {request.data} "
100-
f"status: {ex.msg} ({ex.status})")
101-
return self.error_response(ex.status, message=ex.msg)
99+
return self._msca_dfe_response('Access.post', request.data, ex)
102100

103101
return self.json_response(access.json_data())
104102

@@ -138,15 +136,13 @@ def patch(self, request, *args, **kwargs):
138136
else:
139137
logger.error(
140138
f"Access.patch missing parameter: {request.data}")
141-
return self.error_response(404, message="Insufficient Data")
139+
return self.error_response(400, message="Insufficient Data")
142140
except AccessRecord.DoesNotExist:
143141
logger.error(
144142
f"Access.patch missing access record: {request.data}")
145-
return self.error_response(404, message="Unknown Access Record")
143+
return self.error_response(400, message="Unknown Access Record")
146144
except DataFailureException as ex:
147-
logger.error(
148-
f"Access.patch request: '{ex.url}' ({ex.status}): {ex.msg}")
149-
return self.error_response(ex.status, message=ex.msg)
145+
return self._msca_dfe_response('Access.patch', request.data, ex)
150146

151147
return self.json_response(access.json_data())
152148

@@ -168,9 +164,7 @@ def delete(self, request, *args, **kwargs):
168164
try:
169165
access = revoke_access(accessee, accessor, access_type, acted_as)
170166
except DataFailureException as ex:
171-
logger.error(
172-
f"Access.delete request: {ex.url} ({ex.status}): {ex.msg}")
173-
return self.error_response(ex.status, message=ex.msg)
167+
return self._msca_dfe_response('Access.delete', request.data, ex)
174168

175169
return self.json_response(access.json_data())
176170

@@ -205,6 +199,21 @@ def _is_valid_accessor(self, supported):
205199
supported.is_shared_netid()
206200
or supported.netid_type in ['administrator', 'support']))
207201

202+
def _msca_dfe_response(self, method, request_data, ex):
203+
logger.error(
204+
f"{method} {ex.url} FAILURE data: {request_data} "
205+
f"response: {ex.msg} ({ex.status})")
206+
207+
message = ex.msg
208+
if type(message) == bytes:
209+
try:
210+
json_content = json.loads(message.decode('utf-8'))
211+
message = json_content.get('msg', 'Server Error')
212+
except Exception as e:
213+
pass
214+
215+
return self.error_response(ex.status, message)
216+
208217

209218
class AccessRights(RESTDispatch):
210219
"""

0 commit comments

Comments
 (0)