Page MenuHomeSoftware Heritage

D265.diff
No OneTemporary

D265.diff

diff --git a/docs/index.rst b/docs/index.rst
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -9,6 +9,7 @@
getting-started.md
spec-api.md
+ metadata.md
spec-injection.md
dev-info.md
sys-info.md
diff --git a/swh/deposit/api/private/deposit_read.py b/swh/deposit/api/private/deposit_read.py
--- a/swh/deposit/api/private/deposit_read.py
+++ b/swh/deposit/api/private/deposit_read.py
@@ -150,8 +150,8 @@
# Read information metadata
data['origin'] = {
- 'type': deposit.collection.name,
- 'url': deposit.external_id,
+ 'type': 'deposit',
+ 'url': deposit.client.url + deposit.external_id,
}
# revision
@@ -189,6 +189,28 @@
'branch': 'master'
}
+ provider = {
+ 'provider_name': deposit.client.last_name,
+ 'provider_type': 'deposit_client',
+ 'provider_url': deposit.client.url,
+ 'metadata': {}
+ }
+
+ tool = {
+ 'tool_name': 'swh-deposit',
+ 'tool_version': '0.0.1',
+ 'tool_configuration': {
+ 'sword_version': '2'
+ }
+ }
+
+ data['origin_metadata'] = {
+ 'provider': provider,
+ 'tool': tool,
+ 'metadata': metadata
+ }
+
+ print(data)
return data
def process_get(self, req, collection_name, deposit_id):
diff --git a/swh/deposit/injection/loader.py b/swh/deposit/injection/loader.py
--- a/swh/deposit/injection/loader.py
+++ b/swh/deposit/injection/loader.py
@@ -136,13 +136,36 @@
revision = metadata['revision']
occurrence = metadata['occurrence']
+
self.client.update_deposit_status(deposit_update_url, 'injecting')
+
super().prepare(tar_path=archive,
origin=origin,
visit_date=visit_date,
revision=revision,
occurrences=[occurrence])
+ def store_metadata(self):
+ """Storing the origin_metadata during the load processus.
+
+ Fetching tool and metadata_provider from storage and adding the
+ metadata associated to the current origin.
+
+ """
+ try:
+ tool_id = self.storage.indexer_configuration_get(
+ self.origin_metadata['tool'])
+ provider_id = self.storage.metadata_provider_get_by(
+ self.origin_metadata['provider'])
+
+ self.storage.origin_metadata_add(self.origin_id,
+ self.visit_date,
+ provider_id,
+ tool_id,
+ self.origin_metadata['metadata'])
+ except:
+ self.log.exception('Problem when storing origin_metadata')
+
def post_load(self, success=True):
"""Updating the deposit's status according to its loading status.
diff --git a/swh/deposit/migrations/0006_depositclient_url.py b/swh/deposit/migrations/0006_depositclient_url.py
new file mode 100644
--- /dev/null
+++ b/swh/deposit/migrations/0006_depositclient_url.py
@@ -0,0 +1,21 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.10.7 on 2017-11-07 13:12
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('deposit', '0005_auto_20171019_1436'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='depositclient',
+ name='url',
+ field=models.TextField(default='https://hal.archives-ouvertes.fr/'),
+ preserve_default=False,
+ ),
+ ]
diff --git a/swh/deposit/models.py b/swh/deposit/models.py
--- a/swh/deposit/models.py
+++ b/swh/deposit/models.py
@@ -72,6 +72,7 @@
"""
collections = ArrayField(models.IntegerField(), null=True)
objects = UserManager()
+ url = models.TextField(null=False)
class Meta:
db_table = 'deposit_client'
diff --git a/swh/deposit/tests/api/test_deposit_read_metadata.py b/swh/deposit/tests/api/test_deposit_read_metadata.py
--- a/swh/deposit/tests/api/test_deposit_read_metadata.py
+++ b/swh/deposit/tests/api/test_deposit_read_metadata.py
@@ -37,8 +37,24 @@
expected_meta = {
'origin': {
- 'url': 'some-external-id',
- 'type': 'hal'
+ 'url': 'https://hal.archives-ouvertes.fr/some-external-id',
+ 'type': 'deposit'
+ },
+ 'origin_metadata': {
+ 'metadata': {},
+ 'provider': {
+ 'provider_name': '',
+ 'provider_type': 'deposit_client',
+ 'provider_url': 'https://hal.archives-ouvertes.fr/',
+ 'metadata': {}
+ },
+ 'tool': {
+ 'tool_name': 'swh-deposit',
+ 'tool_version': '0.0.1',
+ 'tool_configuration': {
+ 'sword_version': '2'
+ }
+ }
},
'revision': {
'synthetic': True,
diff --git a/swh/deposit/tests/common.py b/swh/deposit/tests/common.py
--- a/swh/deposit/tests/common.py
+++ b/swh/deposit/tests/common.py
@@ -160,12 +160,14 @@
deposit_request_types[deposit_request_type] = drt
_name = 'hal'
+ _url = 'https://hal.archives-ouvertes.fr/'
# set collection up
_collection = DepositCollection(name=_name)
_collection.save()
# set user/client up
_client = DepositClient.objects.create_user(username=_name,
- password=_name)
+ password=_name,
+ url=_url)
_client.collections = [_collection.id]
_client.save()

File Metadata

Mime Type
text/plain
Expires
Mon, Apr 14, 2:12 AM (3 d, 19 m ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3217612

Event Timeline