Changeset View
Changeset View
Standalone View
Standalone View
swh/deposit/api/deposit_update.py
# Copyright (C) 2017-2020 The Software Heritage developers | # Copyright (C) 2017-2020 The Software Heritage developers | ||||
# See the AUTHORS file at the top-level directory of this distribution | # See the AUTHORS file at the top-level directory of this distribution | ||||
# License: GNU General Public License version 3, or any later version | # License: GNU General Public License version 3, or any later version | ||||
# See top-level LICENSE file for more information | # See top-level LICENSE file for more information | ||||
from typing import Any, Dict, Optional, Tuple | from typing import Any, Dict, Optional, Tuple | ||||
from rest_framework import status | from rest_framework import status | ||||
from rest_framework.request import Request | from rest_framework.request import Request | ||||
from swh.deposit.api.checks import check_metadata | |||||
from swh.deposit.api.converters import convert_status_detail | |||||
from swh.deposit.models import Deposit | from swh.deposit.models import Deposit | ||||
from swh.model.hashutil import hash_to_bytes | from swh.model.hashutil import hash_to_bytes | ||||
from swh.model.identifiers import parse_swhid | from swh.model.identifiers import parse_swhid | ||||
from swh.model.model import ( | from swh.model.model import ( | ||||
MetadataAuthority, | MetadataAuthority, | ||||
MetadataAuthorityType, | MetadataAuthorityType, | ||||
MetadataFetcher, | MetadataFetcher, | ||||
MetadataTargetType, | MetadataTargetType, | ||||
▲ Show 20 Lines • Show All 204 Lines • ▼ Show 20 Lines | ) -> Dict[str, Any]: | ||||
if not metadata: | if not metadata: | ||||
return make_error_dict( | return make_error_dict( | ||||
BAD_REQUEST, | BAD_REQUEST, | ||||
"Empty body request is not supported", | "Empty body request is not supported", | ||||
"Atom entry deposit is supposed to send for metadata. " | "Atom entry deposit is supposed to send for metadata. " | ||||
"If the body is empty, there is no metadata.", | "If the body is empty, there is no metadata.", | ||||
) | ) | ||||
metadata_ok, error_details = check_metadata(metadata) | |||||
if not metadata_ok: | |||||
assert error_details, "Details should be set when a failure occurs" | |||||
return make_error_dict( | |||||
BAD_REQUEST, | |||||
"Functional metadata checks failure", | |||||
convert_status_detail(error_details), | |||||
) | |||||
metadata_authority = MetadataAuthority( | metadata_authority = MetadataAuthority( | ||||
type=MetadataAuthorityType.DEPOSIT_CLIENT, | type=MetadataAuthorityType.DEPOSIT_CLIENT, | ||||
url=deposit.client.provider_url, | url=deposit.client.provider_url, | ||||
metadata={"name": deposit.client.last_name}, | metadata={"name": deposit.client.last_name}, | ||||
) | ) | ||||
metadata_fetcher = MetadataFetcher( | metadata_fetcher = MetadataFetcher( | ||||
name=self.tool["name"], | name=self.tool["name"], | ||||
▲ Show 20 Lines • Show All 107 Lines • Show Last 20 Lines |