Changeset View
Changeset View
Standalone View
Standalone View
swh/deposit/api/common.py
Show First 20 Lines • Show All 214 Lines • ▼ Show 20 Lines | ) -> Deposit: | ||||
deposit: deposit being updated/created | deposit: deposit being updated/created | ||||
in_progress: deposit status | in_progress: deposit status | ||||
external_id: external identifier to associate to the deposit | external_id: external identifier to associate to the deposit | ||||
Returns: | Returns: | ||||
The Deposit instance saved or updated. | The Deposit instance saved or updated. | ||||
""" | """ | ||||
complete_date: Optional[datetime.datetime] = None | |||||
if in_progress is False: | if in_progress is False: | ||||
complete_date = timezone.now() | self._complete_deposit(deposit) | ||||
status_type = DEPOSIT_STATUS_DEPOSITED | |||||
else: | else: | ||||
status_type = DEPOSIT_STATUS_PARTIAL | deposit.status = DEPOSIT_STATUS_PARTIAL | ||||
deposit.save() | |||||
return deposit | |||||
# update metadata | def _complete_deposit(self, deposit: Deposit) -> None: | ||||
deposit.complete_date = complete_date | """Marks the deposit as 'deposited', then schedule a check task if configured | ||||
deposit.status = status_type | to do so.""" | ||||
deposit.complete_date = timezone.now() | |||||
deposit.status = DEPOSIT_STATUS_DEPOSITED | |||||
deposit.save() | |||||
if self.config["checks"]: | if self.config["checks"]: | ||||
deposit.save() # needed to have a deposit id | |||||
scheduler = self.scheduler | scheduler = self.scheduler | ||||
if deposit.status == DEPOSIT_STATUS_DEPOSITED and not deposit.check_task_id: | if deposit.status == DEPOSIT_STATUS_DEPOSITED and not deposit.check_task_id: | ||||
task = create_oneshot_task_dict( | task = create_oneshot_task_dict( | ||||
"check-deposit", | "check-deposit", | ||||
collection=deposit.collection.name, | collection=deposit.collection.name, | ||||
deposit_id=deposit.id, | deposit_id=deposit.id, | ||||
retries_left=3, | retries_left=3, | ||||
) | ) | ||||
check_task_id = scheduler.create_tasks([task])[0]["id"] | check_task_id = scheduler.create_tasks([task])[0]["id"] | ||||
deposit.check_task_id = check_task_id | deposit.check_task_id = check_task_id | ||||
deposit.save() | deposit.save() | ||||
return deposit | |||||
def _deposit_request_put( | def _deposit_request_put( | ||||
self, | self, | ||||
deposit: Deposit, | deposit: Deposit, | ||||
deposit_request_data: Dict[str, Any], | deposit_request_data: Dict[str, Any], | ||||
replace_metadata: bool = False, | replace_metadata: bool = False, | ||||
replace_archives: bool = False, | replace_archives: bool = False, | ||||
) -> DepositRequest: | ) -> DepositRequest: | ||||
"""Save a deposit request with metadata attached to a deposit. | """Save a deposit request with metadata attached to a deposit. | ||||
▲ Show 20 Lines • Show All 560 Lines • ▼ Show 20 Lines | class APIBase(APIConfig, AuthenticatedAPIView, metaclass=ABCMeta): | ||||
def _empty_post( | def _empty_post( | ||||
self, | self, | ||||
request: Request, | request: Request, | ||||
headers: ParsedRequestHeaders, | headers: ParsedRequestHeaders, | ||||
collection_name: str, | collection_name: str, | ||||
deposit: Deposit, | deposit: Deposit, | ||||
) -> Receipt: | ) -> Receipt: | ||||
"""Empty post to finalize an empty deposit. | """Empty post to finalize a deposit. | ||||
Args: | Args: | ||||
request: the request holding information to parse | request: the request holding information to parse | ||||
and inject in db | and inject in db | ||||
headers: parsed request headers | headers: parsed request headers | ||||
collection_name: the associated client | collection_name: the associated client | ||||
deposit: deposit to be finalized | deposit: deposit to be finalized | ||||
""" | """ | ||||
deposit.complete_date = timezone.now() | self._complete_deposit(deposit) | ||||
deposit.status = DEPOSIT_STATUS_DEPOSITED | |||||
deposit.save() | assert deposit.complete_date is not None | ||||
return Receipt( | return Receipt( | ||||
deposit_id=deposit.id, | deposit_id=deposit.id, | ||||
deposit_date=deposit.complete_date, | deposit_date=deposit.complete_date, | ||||
status=deposit.status, | status=deposit.status, | ||||
archive=None, | archive=None, | ||||
) | ) | ||||
▲ Show 20 Lines • Show All 310 Lines • Show Last 20 Lines |