Page MenuHomeSoftware Heritage

D3091.id10992.diff
No OneTemporary

D3091.id10992.diff

diff --git a/swh/loader/package/deposit/loader.py b/swh/loader/package/deposit/loader.py
--- a/swh/loader/package/deposit/loader.py
+++ b/swh/loader/package/deposit/loader.py
@@ -122,24 +122,36 @@
if success:
# Update archive with metadata information
origin_metadata = self.metadata["origin_metadata"]
-
logger.debug("origin_metadata: %s", origin_metadata)
- tools = self.storage.tool_add([origin_metadata["tool"]])
- logger.debug("tools: %s", tools)
- tool_id = tools[0]["id"]
provider = origin_metadata["provider"]
- # FIXME: Shall we delete this info?
- provider_id = self.storage.metadata_provider_add(
- provider["provider_name"],
- provider["provider_type"],
- provider["provider_url"],
- metadata=None,
- )
+ authority = {
+ "type": provider["provider_type"],
+ "url": provider["provider_url"],
+ "metadata": {
+ "name": provider["provider_name"],
+ **(provider["metadata"] or {}),
+ },
+ }
+ self.storage.metadata_authority_add(**authority)
+
+ tool = origin_metadata["tool"]
+ fetcher = {
+ "name": tool["name"],
+ "version": tool["version"],
+ "metadata": tool["configuration"],
+ }
+ self.storage.metadata_fetcher_add(**fetcher)
metadata = origin_metadata["metadata"]
+ format = "sword-v2-atom-codemeta-v2-in-json"
self.storage.origin_metadata_add(
- self.url, self.visit_date, provider_id, tool_id, metadata
+ self.url,
+ self.visit_date,
+ {"type": authority["type"], "url": authority["url"]},
+ {"name": fetcher["name"], "version": fetcher["version"]},
+ format,
+ metadata,
)
# Update deposit status
diff --git a/swh/loader/package/deposit/tests/test_deposit.py b/swh/loader/package/deposit/tests/test_deposit.py
--- a/swh/loader/package/deposit/tests/test_deposit.py
+++ b/swh/loader/package/deposit/tests/test_deposit.py
@@ -3,6 +3,7 @@
# License: GNU General Public License version 3, or any later version
# See top-level LICENSE file for more information
+import json
import re
import pytest
@@ -182,38 +183,24 @@
# check metadata
- tool = {
+ fetcher = {
"name": "swh-deposit",
"version": "0.0.1",
- "configuration": {"sword_version": "2",},
}
- tool = loader.storage.tool_get(tool)
- assert tool is not None
- assert tool["id"] is not None
-
- provider = {
- "provider_name": "hal",
- "provider_type": "deposit_client",
- "provider_url": "https://hal-test.archives-ouvertes.fr/",
- "metadata": None,
+ authority = {
+ "type": "deposit_client",
+ "url": "https://hal-test.archives-ouvertes.fr/",
}
- provider = loader.storage.metadata_provider_get_by(provider)
- assert provider is not None
- assert provider["id"] is not None
-
- metadata = list(
- loader.storage.origin_metadata_get_by(url, provider_type="deposit_client")
- )
+ metadata = list(loader.storage.origin_metadata_get(url, authority))
assert metadata is not None
assert isinstance(metadata, list)
assert len(metadata) == 1
metadata0 = metadata[0]
- assert metadata0["provider_id"] == provider["id"]
- assert metadata0["provider_type"] == "deposit_client"
- assert metadata0["tool_id"] == tool["id"]
+ assert metadata0["authority"] == authority
+ assert metadata0["fetcher"] == fetcher
def test_deposit_loading_ok_2(swh_config, requests_mock_datadir):
@@ -300,10 +287,18 @@
],
}
+ fetcher = {
+ "name": "swh-deposit",
+ "version": "0.0.1",
+ }
+
+ authority = {
+ "type": "deposit_client",
+ "url": "https://hal-test.archives-ouvertes.fr/",
+ }
+
# Check the metadata swh side
- origin_meta = list(
- loader.storage.origin_metadata_get_by(url, provider_type="deposit_client")
- )
+ origin_meta = list(loader.storage.origin_metadata_get(url, authority))
assert len(origin_meta) == 1
@@ -312,18 +307,18 @@
origin_meta.pop("discovery_date")
assert origin_meta == {
- "metadata": {
- "@xmlns": ["http://www.w3.org/2005/Atom"],
- "author": ["some awesome author", "another one", "no one"],
- "codemeta:dateCreated": "2017-10-07T15:17:08Z",
- "codemeta:datePublished": "2017-10-08T15:00:00Z",
- "external_identifier": "some-external-id",
- "url": "https://hal-test.archives-ouvertes.fr/some-external-id",
- },
"origin_url": "https://hal-test.archives-ouvertes.fr/some-external-id",
- "provider_id": 1,
- "provider_name": "hal",
- "provider_type": "deposit_client",
- "provider_url": "https://hal-test.archives-ouvertes.fr/",
- "tool_id": 1,
+ "metadata": json.dumps(
+ {
+ "@xmlns": ["http://www.w3.org/2005/Atom"],
+ "author": ["some awesome author", "another one", "no one"],
+ "codemeta:dateCreated": "2017-10-07T15:17:08Z",
+ "codemeta:datePublished": "2017-10-08T15:00:00Z",
+ "external_identifier": "some-external-id",
+ "url": "https://hal-test.archives-ouvertes.fr/some-external-id",
+ }
+ ).encode(),
+ "format": "sword-v2-atom-codemeta-v2-in-json",
+ "authority": authority,
+ "fetcher": fetcher,
}

File Metadata

Mime Type
text/plain
Expires
Mon, Apr 14, 6:06 AM (12 h, 18 m ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3219046

Event Timeline