Skip to content
Snippets Groups Projects
Commit 7b43805f authored by Enrique Garcia's avatar Enrique Garcia
Browse files

Merge branch 'repr' into 'master'

simplify record representation, prettier decription in print_info and method to write zenodo json

See merge request !48
parents 231707b0 9037b591
No related branches found
No related tags found
1 merge request!48simplify record representation, prettier decription in print_info and method to write zenodo json
Pipeline #139170 failed
...@@ -11,6 +11,7 @@ from urllib.request import urlopen ...@@ -11,6 +11,7 @@ from urllib.request import urlopen
import warnings import warnings
from ...metadata.codemeta2zenodo import parse_codemeta_and_write_zenodo_metadata_file from ...metadata.codemeta2zenodo import parse_codemeta_and_write_zenodo_metadata_file
from . import http_status from . import http_status
from bs4 import BeautifulSoup
__all__ = [ __all__ = [
'ZenodoAPI', 'ZenodoAPI',
...@@ -444,7 +445,14 @@ class Record: ...@@ -444,7 +445,14 @@ class Record:
return f"Record #{self.id} : {self.title}" return f"Record #{self.id} : {self.title}"
def __repr__(self): def __repr__(self):
return json.dumps(self.data, indent=4, sort_keys=True) return f"Record({self.id})"
def write_zenodo(self, filename='.zenodo.json', overwrite=False):
if Path(filename).exists() and not overwrite:
raise FileExistsError(f"The file {filename} exists. Use overwrite.")
else:
with open(filename, 'w') as file:
json.dump(self.data, file)
@property @property
def id(self): def id(self):
...@@ -456,7 +464,7 @@ class Record: ...@@ -456,7 +464,7 @@ class Record:
def print_info(self): def print_info(self):
metadata = self.data['metadata'] metadata = self.data['metadata']
descrp = metadata['description'] descrp = BeautifulSoup(metadata['description']).text
print(f"=== Record #{self.id} ===") print(f"=== Record #{self.id} ===")
print(f"Title: {self.title} ===") print(f"Title: {self.title} ===")
print(f"DOI: {self.data['doi']}") print(f"DOI: {self.data['doi']}")
...@@ -480,9 +488,9 @@ class Record: ...@@ -480,9 +488,9 @@ class Record:
@property @property
def doi(self): def doi(self):
if not 'conceptdoi' in self.data: if not 'doi' in self.data:
raise KeyError(f"Record {self.id} does not have a conceptdoi") raise KeyError(f"Record {self.id} does not have a doi")
return self.data['conceptdoi'] return self.data['doi']
def get_mybinder_url(self): def get_mybinder_url(self):
binder_zenodo_url = 'https://mybinder.org/v2/zenodo/' binder_zenodo_url = 'https://mybinder.org/v2/zenodo/'
......
...@@ -167,3 +167,10 @@ def test_record(test_get_record_4923992): ...@@ -167,3 +167,10 @@ def test_record(test_get_record_4923992):
def test_get_record_sandbox(): def test_get_record_sandbox():
record = get_record(520735, sandbox=True) record = get_record(520735, sandbox=True)
assert record.data['doi'] == '10.5072/zenodo.520735' assert record.data['doi'] == '10.5072/zenodo.520735'
def test_write_record_zenodo(test_get_record_4923992, tmpdir):
record = test_get_record_4923992
record.write_zenodo(filename=tmpdir/'.zenodo.json')
with open(tmpdir/'.zenodo.json') as file:
json_dict = json.load(file)
assert json_dict['conceptdoi'] == '10.5281/zenodo.3572654'
...@@ -23,7 +23,8 @@ setup( ...@@ -23,7 +23,8 @@ setup(
version=get_property('__version__', 'eossr'), version=get_property('__version__', 'eossr'),
description="ESCAPE OSSR library", description="ESCAPE OSSR library",
install_requires=[ install_requires=[
"requests" "requests",
"bs4",
], ],
packages=find_packages(), packages=find_packages(),
scripts=['eossr/scripts/parse_last_release_git.sh'], scripts=['eossr/scripts/parse_last_release_git.sh'],
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment