diff --git a/papers/commands/add_library_cmd.py b/papers/commands/add_library_cmd.py index 883c720..60dd773 100644 --- a/papers/commands/add_library_cmd.py +++ b/papers/commands/add_library_cmd.py @@ -1,4 +1,5 @@ from .. import repo +from ..paper import Paper def parser(subparsers, config): @@ -7,9 +8,11 @@ def parser(subparsers, config): parser.add_argument('bibfile', help='bibtex, bibtexml or bibyaml file') return parser + def command(config, bibfile): """ :param bibtex bibtex file (in .bib, .bibml or .yaml format. """ rp = repo.Repository.from_directory() - rp.add_papers(bibfile) + for p in Paper.many_from_bib(bibfile): + rp.add_paper(p) diff --git a/papers/paper.py b/papers/paper.py index 38a42c1..ab27a47 100644 --- a/papers/paper.py +++ b/papers/paper.py @@ -146,3 +146,9 @@ class Paper(object): @classmethod def create_meta(cls): return BASE_META.copy() + + @classmethod + def many_from_bib(cls, bibpath): + bib_data = files.load_externalbibfile(bibpath) + return [Paper(bibentry=bib_data.entries[k], citekey=k) + for k in bib_data.entries] diff --git a/papers/repo.py b/papers/repo.py index 2b0de46..0eb0003 100644 --- a/papers/repo.py +++ b/papers/repo.py @@ -91,13 +91,6 @@ class Repository(object): paper.save_to_disc(self.path_to_paper_file(paper.citekey, 'bib'), self.path_to_paper_file(paper.citekey, 'meta')) - def add_papers(self, bibpath): - bib_data = files.load_externalbibfile(bibpath) - for k in bib_data.entries: - sub_bib = bib_data.entries[k] - p = Paper(bibentry=sub_bib, citekey=k) - self.add_paper(p) - def get_free_citekey(self, paper, citekey=None): """Create a unique citekey for the given paper. """