Simplifies paper retrieval from repo.

- Removes old paper_from_ref from repo.
- Changes papers_from_citekey to get_paper.
- Switches texnote plugin to new ref argument helpers.
main
Olivier Mangin 12 years ago
parent 105ae292b9
commit 18ed2a7629

@ -16,7 +16,7 @@ def parser(subparsers, config):
def command(config, ui, meta, reference): def command(config, ui, meta, reference):
rp = repo.Repository.from_directory(config) rp = repo.Repository.from_directory(config)
key = parse_reference(ui, rp, reference) key = parse_reference(ui, rp, reference)
paper = rp.paper_from_citekey(key) paper = rp.get_paper(key)
to_edit = 'bib' to_edit = 'bib'
if meta: if meta:
to_edit = 'meta' to_edit = 'meta'

@ -21,7 +21,7 @@ def command(config, ui, bib_format, references):
:param bib_format (in 'bibtex', 'yaml') :param bib_format (in 'bibtex', 'yaml')
""" """
rp = repo.Repository.from_directory(config) rp = repo.Repository.from_directory(config)
papers = [rp.paper_from_citekey(c) papers = [rp.get_paper(c)
for c in parse_references(ui, rp, references)] for c in parse_references(ui, rp, references)]
if len(papers) == 0: if len(papers) == 0:
papers = rp.all_papers() papers = rp.all_papers()

@ -19,7 +19,7 @@ def parser(subparsers, config):
def command(config, ui, with_command, reference): def command(config, ui, with_command, reference):
rp = repo.Repository.from_directory(config) rp = repo.Repository.from_directory(config)
key = parse_reference(ui, rp, reference) key = parse_reference(ui, rp, reference)
paper = rp.paper_from_citekey(key) paper = rp.get_paper(key)
if with_command is None: if with_command is None:
with_command = config.get(configs.MAIN_SECTION, 'open-cmd') with_command = config.get(configs.MAIN_SECTION, 'open-cmd')
try: try:

@ -19,6 +19,7 @@ from ... import repo
from ...paper import NoDocumentFile from ...paper import NoDocumentFile
from ... import configs from ... import configs
from ... import files from ... import files
from ...commands.helpers import add_references_argument, parse_reference
TEXNOTE_SECTION = 'texnote' TEXNOTE_SECTION = 'texnote'
TEXNOTE_SAMPLE_FILE = os.path.join(os.path.dirname(__file__), 'note_sample.tex') TEXNOTE_SAMPLE_FILE = os.path.join(os.path.dirname(__file__), 'note_sample.tex')
@ -26,8 +27,8 @@ TEXNOTE_DIR = 'texnote'
def parser(subparsers, config): def parser(subparsers, config):
parser = subparsers.add_parser('texnote', help="edit advance note in latex") parser = subparsers.add_parser('texnote', help="edit advance note in latex")
parser.add_argument('ref', help='the paper associated citekey or number')
parser.add_argument('-v', '--view', action='store_true', help='open the paper in a pdf viewer', default=None) parser.add_argument('-v', '--view', action='store_true', help='open the paper in a pdf viewer', default=None)
add_references_argument(parser, single=True)
return parser return parser
@ -43,7 +44,7 @@ def command(config, ui, ref, view):
def open_texnote(config, ui, ref): def open_texnote(config, ui, ref):
rp = repo.Repository.from_directory(config) rp = repo.Repository.from_directory(config)
paper = rp.paper_from_ref(ref, fatal=True) paper = rp.get_paper(parse_reference(ui, rp, ref))
if not paper.metadata.has_key('texnote'): if not paper.metadata.has_key('texnote'):
texnote_dir = os.path.join(rp.papersdir, TEXNOTE_DIR) texnote_dir = os.path.join(rp.papersdir, TEXNOTE_DIR)

@ -34,7 +34,7 @@ class Repository(object):
def has_paper(self, citekey): def has_paper(self, citekey):
return citekey in self.citekeys return citekey in self.citekeys
def paper_from_citekey(self, citekey): def get_paper(self, citekey):
"""Load a paper by its citekey from disk, if necessary.""" """Load a paper by its citekey from disk, if necessary."""
return PaperInRepo.load( return PaperInRepo.load(
self, self.path_to_paper_file(citekey, 'bib'), self, self.path_to_paper_file(citekey, 'bib'),
@ -52,10 +52,6 @@ class Repository(object):
except (IndexError, ValueError): except (IndexError, ValueError):
raise(InvalidReference) raise(InvalidReference)
def paper_from_ref(self, ref):
key = self.citekey_from_ref(ref)
return self.paper_from_citekey(key)
# creating new papers # creating new papers
def add_paper(self, p): def add_paper(self, p):
@ -111,7 +107,7 @@ class Repository(object):
self.remove(old_citekey) self.remove(old_citekey)
def remove(self, citekey): def remove(self, citekey):
paper = self.paper_from_citekey(citekey) paper = self.get_paper(citekey)
self.citekeys.remove(citekey) self.citekeys.remove(citekey)
self.save() self.save()
for f in ('bib', 'meta'): for f in ('bib', 'meta'):
@ -188,7 +184,7 @@ class Repository(object):
def all_papers(self): def all_papers(self):
for key in self.citekeys: for key in self.citekeys:
yield self.paper_from_citekey(key) yield self.get_paper(key)
def import_document(self, citekey, doc_file): def import_document(self, citekey, doc_file):
if citekey not in self.citekeys: if citekey not in self.citekeys:

@ -72,16 +72,16 @@ class TestUpdatePaper(TestRepo):
self.repo.update(fixtures.turing1950, old_citekey='Doe2013') self.repo.update(fixtures.turing1950, old_citekey='Doe2013')
def test_updates_same_key(self): def test_updates_same_key(self):
new = self.repo.paper_from_citekey('Turing1950') new = self.repo.get_paper('Turing1950')
new.bibentry.fields['journal'] = u'Mind' new.bibentry.fields['journal'] = u'Mind'
self.repo.update(new) self.repo.update(new)
self.assertEqual(new, self.repo.paper_from_citekey('Turing1950')) self.assertEqual(new, self.repo.get_paper('Turing1950'))
def test_updates_same_key_with_old_arg(self): def test_updates_same_key_with_old_arg(self):
new = self.repo.paper_from_citekey('Turing1950') new = self.repo.get_paper('Turing1950')
new.bibentry.fields['journal'] = u'Mind' new.bibentry.fields['journal'] = u'Mind'
self.repo.update(new, old_citekey='Turing1950') self.repo.update(new, old_citekey='Turing1950')
self.assertEqual(new, self.repo.paper_from_citekey('Turing1950')) self.assertEqual(new, self.repo.get_paper('Turing1950'))
def test_update_new_key_removes_old(self): def test_update_new_key_removes_old(self):
self.repo.update(fixtures.doe2013, old_citekey='Turing1950') self.repo.update(fixtures.doe2013, old_citekey='Turing1950')
@ -90,7 +90,7 @@ class TestUpdatePaper(TestRepo):
def test_update_new_key_updates(self): def test_update_new_key_updates(self):
self.repo.update(fixtures.doe2013, old_citekey='Turing1950') self.repo.update(fixtures.doe2013, old_citekey='Turing1950')
self.assertTrue(self.repo.has_paper('Doe2013')) self.assertTrue(self.repo.has_paper('Doe2013'))
self.assertEqual(self.repo.paper_from_citekey('Doe2013'), self.assertEqual(self.repo.get_paper('Doe2013'),
PaperInRepo.from_paper(fixtures.doe2013, self.repo)) PaperInRepo.from_paper(fixtures.doe2013, self.repo))
def test_update_new_key_moves_doc(self): def test_update_new_key_moves_doc(self):

Loading…
Cancel
Save