Skip to content

Commit

Permalink
Prohibit uploads to dandiset during un-embargo
Browse files Browse the repository at this point in the history
  • Loading branch information
jjnesbitt committed Jun 17, 2024
1 parent c5083ff commit ef7c530
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 0 deletions.
19 changes: 19 additions & 0 deletions dandiapi/api/tests/test_upload.py
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,25 @@ def test_upload_initialize(api_client, user, dandiset_factory, embargoed):
assert upload.blob.name == f'test-prefix/blobs/{upload_id[:3]}/{upload_id[3:6]}/{upload_id}'


@pytest.mark.django_db()
def test_upload_initialize_unembargoing(api_client, user, dandiset_factory):
dandiset = dandiset_factory(embargo_status=Dandiset.EmbargoStatus.UNEMBARGOING)
api_client.force_authenticate(user=user)
assign_perm('owner', user, dandiset)

content_size = 123
resp = api_client.post(
'/api/uploads/initialize/',
{
'contentSize': content_size,
'digest': {'algorithm': 'dandi:dandi-etag', 'value': 'f' * 32 + '-1'},
'dandiset': dandiset.identifier,
},
format='json',
)
assert resp.status_code == 400


@pytest.mark.django_db()
def test_upload_initialize_existing_asset_blob(api_client, user, dandiset, asset_blob):
api_client.force_authenticate(user=user)
Expand Down
5 changes: 5 additions & 0 deletions dandiapi/api/views/upload.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@

from dandiapi.api.models import AssetBlob, Dandiset, Upload
from dandiapi.api.permissions import IsApproved
from dandiapi.api.services.dandiset.exceptions import DandisetUnEmbargoInProgressError
from dandiapi.api.tasks import calculate_sha256
from dandiapi.api.views.serializers import AssetBlobSerializer

Expand Down Expand Up @@ -135,6 +136,10 @@ def upload_initialize_view(request: Request) -> HttpResponseBase:
if response:
return response

# Ensure dandiset not in the process of un-embargo
if dandiset.embargo_status == Dandiset.EmbargoStatus.UNEMBARGOING:
raise DandisetUnEmbargoInProgressError

logging.info(
'Starting upload initialization of size %s, ETag %s to dandiset %s',
content_size,
Expand Down

0 comments on commit ef7c530

Please sign in to comment.