diff --git a/swh/deposit/api/collection.py b/swh/deposit/api/collection.py --- a/swh/deposit/api/collection.py +++ b/swh/deposit/api/collection.py @@ -15,7 +15,13 @@ SWHFileUploadZipParser, SWHMultiPartParser, ) -from .common import ACCEPT_ARCHIVE_CONTENT_TYPES, APIPost, ParsedRequestHeaders, Receipt +from .common import ( + ACCEPT_ARCHIVE_CONTENT_TYPES, + APIPost, + ParsedRequestHeaders, + Receipt, + get_collection_by_name, +) class CollectionAPI(APIPost): @@ -86,7 +92,7 @@ """ assert deposit is None - deposit = self._deposit_create(external_id=headers.slug) + deposit = self._deposit_create(collection_name, external_id=headers.slug) if req.content_type in ACCEPT_ARCHIVE_CONTENT_TYPES: receipt = self._binary_upload( @@ -103,7 +109,10 @@ return status.HTTP_201_CREATED, EDIT_IRI, receipt - def _deposit_create(self, external_id: Optional[str]) -> Deposit: + def _deposit_create( + self, collection_name: str, external_id: Optional[str] + ) -> Deposit: + collection = get_collection_by_name(collection_name) deposit_parent: Optional[Deposit] = None if external_id: @@ -123,7 +132,7 @@ pass return Deposit( - collection=self._collection, + collection=collection, external_id=external_id or "", client=self._client, parent=deposit_parent, diff --git a/swh/deposit/api/common.py b/swh/deposit/api/common.py --- a/swh/deposit/api/common.py +++ b/swh/deposit/api/common.py @@ -861,7 +861,11 @@ def checks( self, request: Request, collection_name: str, deposit: Optional[Deposit] = None ) -> ParsedRequestHeaders: - self._collection = get_collection_by_name(collection_name) + if deposit is None: + collection = get_collection_by_name(collection_name) + else: + assert collection_name == deposit.collection.name + collection = deposit.collection username = request.user.username if username: # unauthenticated request can have the username empty @@ -872,7 +876,7 @@ except DepositClient.DoesNotExist: raise DepositError(NOT_FOUND, f"Unknown client name {username}") - collection_id = self._collection.id + collection_id = collection.id collections = self._client.collections assert collections is not None if collection_id not in collections: