Page Menu
Home
Software Heritage
Search
Configure Global Search
Log In
Files
F7437771
D3091.id10992.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
5 KB
Subscribers
None
D3091.id10992.diff
View Options
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
Details
Attached
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
Attached To
D3091: Use the new API for origin_metadata.
Event Timeline
Log In to Comment