Skip to content

Commit 4d9afc4

Browse files
committed
remove unnecessary compatability layer
1 parent 3fcc2ab commit 4d9afc4

File tree

2 files changed

+17
-53
lines changed

2 files changed

+17
-53
lines changed

dandiapi/api/doi.py

Lines changed: 9 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -24,42 +24,6 @@
2424
datacite_client = DataCiteClient()
2525

2626

27-
def generate_doi_data(
28-
version: Version, version_doi: bool = True, event: str | None = None
29-
) -> tuple[str, dict]:
30-
"""
31-
Generate DOI data for a version or dandiset.
32-
33-
Args:
34-
version: Version object containing metadata.
35-
version_doi: If True, generate a Version DOI, otherwise generate a Dandiset DOI.
36-
event: The DOI event type.
37-
- None: Creates a Draft DOI.
38-
- "publish": Creates or promotes to a Findable DOI.
39-
- "hide": Converts to a Registered DOI.
40-
41-
Returns:
42-
Tuple of (doi_string, datacite_payload)
43-
"""
44-
return datacite_client.generate_doi_data(version, version_doi, event)
45-
46-
47-
def create_or_update_doi(datacite_payload: dict) -> str | None:
48-
"""
49-
Create or update a DOI with the DataCite API.
50-
51-
Args:
52-
datacite_payload: The DOI payload to send to DataCite.
53-
54-
Returns:
55-
The DOI string on success, None on failure when not configured.
56-
57-
Raises:
58-
requests.exceptions.HTTPError: If the API request fails.
59-
"""
60-
return datacite_client.create_or_update_doi(datacite_payload)
61-
62-
6327
def delete_or_hide_doi(doi: str) -> None:
6428
"""
6529
Delete a draft DOI or hide a findable DOI depending on its state.
@@ -87,14 +51,14 @@ def _create_dandiset_draft_doi(draft_version: Version) -> None:
8751
draft_version: The draft version of the dandiset.
8852
"""
8953
# Generate a Draft DOI (event=None)
90-
dandiset_doi, dandiset_doi_payload = generate_doi_data(
54+
dandiset_doi, dandiset_doi_payload = datacite_client.generate_doi_data(
9155
draft_version,
9256
version_doi=False,
9357
event=None, # Draft DOI
9458
)
9559

9660
# Create the DOI
97-
create_or_update_doi(dandiset_doi_payload)
61+
datacite_client.create_or_update_doi(dandiset_doi_payload)
9862

9963
# Store the DOI in the draft version
10064
draft_version.doi = dandiset_doi
@@ -116,14 +80,14 @@ def _update_draft_version_doi(draft_version: Version) -> None:
11680
return
11781

11882
# Generate DOI payload with updated metadata
119-
dandiset_doi, dandiset_doi_payload = generate_doi_data(
83+
dandiset_doi, dandiset_doi_payload = datacite_client.generate_doi_data(
12084
draft_version,
12185
version_doi=False, # Generate a Dandiset DOI, not a Version DOI
12286
event=None, # Keep as Draft DOI
12387
)
12488

12589
# Create or update the DOI
126-
create_or_update_doi(dandiset_doi_payload)
90+
datacite_client.create_or_update_doi(dandiset_doi_payload)
12791

12892
# If the version doesn't have a DOI yet, store it
12993
if draft_version.doi is None:
@@ -152,30 +116,30 @@ def _handle_publication_dois(version_id: int) -> None:
152116
is_first_publication = draft_version.doi is None
153117

154118
# Create Version DOI as Findable
155-
version_doi, version_doi_payload = generate_doi_data(
119+
version_doi, version_doi_payload = datacite_client.generate_doi_data(
156120
version, version_doi=True, event='publish'
157121
)
158122

159123
# Either create or update the Dandiset DOI based on whether it's the first publication
160124
if is_first_publication:
161125
# For first publication: generate Dandiset DOI and promote from Draft to Findable
162-
dandiset_doi, dandiset_doi_payload = generate_doi_data(
126+
dandiset_doi, dandiset_doi_payload = datacite_client.generate_doi_data(
163127
version,
164128
version_doi=False,
165129
event='publish', # Promote to Findable on first publication
166130
)
167131
else:
168132
# For subsequent publications: update the metadata but keep as Findable
169-
dandiset_doi, dandiset_doi_payload = generate_doi_data(
133+
dandiset_doi, dandiset_doi_payload = datacite_client.generate_doi_data(
170134
version,
171135
version_doi=False,
172136
event='publish', # Update existing Findable DOI
173137
)
174138

175139
# Create or update the DOIs
176140
# TODO(asmacdo) we need to try:except here, so dandiset doi doesnt block version doi
177-
create_or_update_doi(dandiset_doi_payload)
178-
create_or_update_doi(version_doi_payload)
141+
datacite_client.create_or_update_doi(dandiset_doi_payload)
142+
datacite_client.create_or_update_doi(version_doi_payload)
179143

180144
# Store the DOI values
181145
version.doi = version_doi

dandiapi/api/tests/test_doi.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@
99
def test__create_dandiset_draft_doi(draft_version, mocker):
1010
"""Test the _create_dandiset_draft_doi function directly."""
1111
# Set up mocks
12-
mock_generate_doi = mocker.patch('dandiapi.api.doi.generate_doi_data')
12+
mock_generate_doi = mocker.patch('dandiapi.api.doi.datacite_client.generate_doi_data')
1313
mock_generate_doi.return_value = ('10.48324/dandi.000123', {'data': {'attributes': {}}})
1414

15-
mock_create_doi = mocker.patch('dandiapi.api.doi.create_or_update_doi')
15+
mock_create_doi = mocker.patch('dandiapi.api.doi.datacite_client.create_or_update_doi')
1616
mock_create_doi.return_value = '10.48324/dandi.000123'
1717

1818
# Call the function directly
@@ -34,10 +34,10 @@ def test__create_dandiset_draft_doi(draft_version, mocker):
3434
def test_update_draft_version_doi_no_previous_doi(draft_version, mocker):
3535
"""Test updating a draft DOI when none exists yet."""
3636
# Set up mocks
37-
mock_generate_doi = mocker.patch('dandiapi.api.doi.generate_doi_data')
37+
mock_generate_doi = mocker.patch('dandiapi.api.doi.datacite_client.generate_doi_data')
3838
mock_generate_doi.return_value = ('10.48324/dandi.000123', {'data': {'attributes': {}}})
3939

40-
mock_create_doi = mocker.patch('dandiapi.api.doi.create_or_update_doi')
40+
mock_create_doi = mocker.patch('dandiapi.api.doi.datacite_client.create_or_update_doi')
4141
mock_create_doi.return_value = '10.48324/dandi.000123'
4242

4343
_update_draft_version_doi(draft_version)
@@ -62,10 +62,10 @@ def test_update_draft_version_doi_existing_doi(draft_version, mocker):
6262
draft_version.save()
6363

6464
# Set up mocks
65-
mock_generate_doi = mocker.patch('dandiapi.api.doi.generate_doi_data')
65+
mock_generate_doi = mocker.patch('dandiapi.api.doi.datacite_client.generate_doi_data')
6666
mock_generate_doi.return_value = ('10.48324/dandi.000123', {'data': {'attributes': {}}})
6767

68-
mock_create_doi = mocker.patch('dandiapi.api.doi.create_or_update_doi')
68+
mock_create_doi = mocker.patch('dandiapi.api.doi.datacite_client.create_or_update_doi')
6969
mock_create_doi.return_value = '10.48324/dandi.000123'
7070

7171
_update_draft_version_doi(draft_version)
@@ -86,8 +86,8 @@ def test_update_draft_version_doi_existing_doi(draft_version, mocker):
8686
def test_update_draft_version_doi_published_version(draft_version, published_version, mocker):
8787
"""Test that update_draft_version_doi is a no-op for dandisets with published versions."""
8888
# Set up mocks
89-
mock_generate_doi = mocker.patch('dandiapi.api.doi.generate_doi_data')
90-
mock_create_doi = mocker.patch('dandiapi.api.doi.create_or_update_doi')
89+
mock_generate_doi = mocker.patch('dandiapi.api.doi.datacite_client.generate_doi_data')
90+
mock_create_doi = mocker.patch('dandiapi.api.doi.datacite_client.create_or_update_doi')
9191

9292
_update_draft_version_doi(draft_version)
9393

0 commit comments

Comments
 (0)