diff --git a/eossr/__init__.py b/eossr/__init__.py index 96330b75149b193545a1326d5608f4376d3829f8..52c2eb0c6397d582ba30a75593e294cf8fcf4ce0 100644 --- a/eossr/__init__.py +++ b/eossr/__init__.py @@ -1,4 +1,4 @@ from pathlib import Path -ROOT_DIR = Path(__file__).parents[1].as_posix() +ROOT_DIR = Path(__file__).absolute().parents[1].as_posix() __version__ = "0.2" diff --git a/eossr/api/zenodo/__init__.py b/eossr/api/zenodo/__init__.py index 76874b860e4b85dd3a2081a86a0f9a0a09a8cb38..4182e168ee758193e8765db7fb69d43f8af30ce7 100644 --- a/eossr/api/zenodo/__init__.py +++ b/eossr/api/zenodo/__init__.py @@ -32,7 +32,7 @@ zenodo_sandbox_api_url = "https://sandbox.zenodo.org/api" class ZenodoAPI: - def __init__(self, access_token, sandbox=True, proj_root_dir=Path(ROOT_DIR).absolute().name): + def __init__(self, access_token, sandbox=True, proj_root_dir=Path(ROOT_DIR)): """ Manages the communication with the (sandbox.)zenodo REST API through the Python request library. The client would allow to perform the following tasks within the (sandbox.)zenodo api environment: diff --git a/eossr/scripts/eossr_upload_repository.py b/eossr/scripts/eossr_upload_repository.py index 51672461a67e680e3451aefa67797cc339114ebd..7cd479269e89f59fe1399f627f28ac2909cb3b37 100644 --- a/eossr/scripts/eossr_upload_repository.py +++ b/eossr/scripts/eossr_upload_repository.py @@ -44,6 +44,7 @@ class SimilarRecordError(Exception): def upload(zenodo_token, sandbox_flag, upload_directory, zip_root_dir=False, record_id=None, erase_previous_files=True, force_new_record=False, publish=True): """ + Must have a metadata file in directory :param zenodo_token: :param sandbox_flag: @@ -56,10 +57,10 @@ def upload(zenodo_token, sandbox_flag, upload_directory, zip_root_dir=False, rec :return: """ - zenodo = ZenodoAPI(access_token=zenodo_token, sandbox=sandbox_flag) + zenodo = ZenodoAPI(access_token=zenodo_token, sandbox=sandbox_flag, proj_root_dir=upload_directory) print(f"root_dir: {zenodo.root_dir.absolute()}") print(f"codemeta_file: {zenodo.path_codemeta_file}") - print(f"codemeta_] file exists: {zenodo.path_codemeta_file.exists()}") + print(f"codemeta file exists: {zenodo.path_codemeta_file.exists()}") print(f"zenodo file exists: {zenodo.path_zenodo_file.exists()}") # Loads the metadata files if exists @@ -75,7 +76,7 @@ def upload(zenodo_token, sandbox_flag, upload_directory, zip_root_dir=False, rec else: raise FileNotFoundError("No metadata provided") - metadata_for_check = deepcopy(metadata) + metadata_for_check = {'metadata':metadata} metadata_for_check['id'] = 1 # fake id to create fake record record = Record(metadata_for_check) diff --git a/eossr/scripts/tests/test_scripts.py b/eossr/scripts/tests/test_scripts.py index 615569075c883c7489b0ba7b39dd0931406f0dec..f751ac6d256c2617d927b603d57f810b15a76097 100644 --- a/eossr/scripts/tests/test_scripts.py +++ b/eossr/scripts/tests/test_scripts.py @@ -5,6 +5,7 @@ import pytest import subprocess import pkg_resources import os +import shutil from pathlib import Path from os.path import dirname, realpath, join from eossr.scripts import eossr_upload_repository @@ -57,6 +58,7 @@ def test_help_all_scripts(script): def test_eossr_upload_repository(tmpdir): path_test_filename = Path(tmpdir).joinpath('test.txt') Path(path_test_filename).write_text('Hello World') + shutil.copy(Path(ROOT_DIR).joinpath('codemeta.json'), tmpdir) published = eossr_upload_repository.upload(zenodo_token=os.getenv('SANDBOX_ZENODO_TOKEN'), sandbox_flag=True, upload_directory=tmpdir