Skip to content

Commit ab8ca9c

Browse files
committed
Update except block for get_identifier_value
1 parent 25d892f commit ab8ca9c

File tree

2 files changed

+30
-7
lines changed

2 files changed

+30
-7
lines changed

osf/models/node.py

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1234,16 +1234,21 @@ def set_privacy(self, permissions, auth=None, log=True, save=True, meeting_creat
12341234
status.push_status_message(message, kind='info', trust=False)
12351235

12361236
# Update existing identifiers
1237-
try:
1238-
if self.get_identifier_value('doi'):
1237+
if self.get_identifier_value('doi'):
1238+
try:
12391239
update_doi_metadata_on_change(self._id)
1240-
elif self.is_registration:
1240+
except Exception:
1241+
logger.exception(
1242+
f'Failed to update DOI metadata for {self._id} during set_privacy. '
1243+
)
1244+
elif self.is_registration:
1245+
try:
12411246
doi = self.request_identifier('doi')['doi']
12421247
self.set_identifier_value('doi', doi)
1243-
except Exception:
1244-
logger.exception(
1245-
f'Failed to create/update DOI for {self._id} during set_privacy. '
1246-
)
1248+
except Exception:
1249+
logger.exception(
1250+
f'Failed to create DOI for registration {self._id} during set_privacy. '
1251+
)
12471252

12481253
if log:
12491254
action = NodeLog.MADE_PUBLIC if permissions == 'public' else NodeLog.MADE_PRIVATE

osf_tests/test_registrations.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -394,6 +394,24 @@ def test_registration_becomes_public_even_when_doi_creation_fails(self, registra
394394

395395
mock_client.create_identifier.assert_called_once()
396396

397+
@mock.patch('osf.models.node.update_doi_metadata_on_change')
398+
def test_registration_becomes_public_even_when_doi_metadata_update_fails(self, mock_update_doi, registration, auth):
399+
400+
registration.is_public = False
401+
registration.set_identifier_value('doi', '10.1234/test.doi')
402+
registration.save()
403+
404+
assert registration.get_identifier_value('doi') == '10.1234/test.doi'
405+
406+
mock_update_doi.side_effect = Exception('DataCite metadata update failed')
407+
408+
result = registration.set_privacy(Node.PUBLIC, auth=auth, log=False)
409+
410+
assert registration.is_public is True
411+
assert result is True
412+
413+
mock_update_doi.assert_called_once_with(registration._id)
414+
397415

398416
class TestRegisterNodeContributors:
399417

0 commit comments

Comments
 (0)