HomeSoftware Heritage

Move Deposit creation from api/common.py to api/collection.py

Description

Move Deposit creation from api/common.py to api/collection.py

Motivation:

  1. it's not an operation in common, only 'POST Col-IRI' may create a deposit
  2. it makes the BaseAPI._deposit_put function simpler and less complex

This looks like a very long commit, but there are actually four small
changes. In order:

  1. actually move that creation (the large block of code was moved from one file to the other)
  1. make the 'deposit_id' argument of most functions of 'int' type instead of 'Optional[int]', since we now get the id very early by creating it in the Col-IRI view.
  1. unfortunately, this means creating a Deposit and committing it directly to the DB, which changes the behavior of the API, as it used to run checks *before* committing to the DB. Therefore, instead of immediately committing to get the id, it passes the Deposit object, which will be committed later by _deposit_put if all checks pass. This means changing the 'deposit_id: int' argument of many internal functions to 'deposit: Deposit'. This is why the diff looks big, but it's actually a trivial change
  1. updated test_add_metadata_to_unknown_deposit because the API now returns the right error message, as a side-effect.