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):
rp = repo.Repository.from_directory(config)
key = parse_reference(ui, rp, reference)
paper = rp.paper_from_citekey(key)
paper = rp.get_paper(key)
to_edit = 'bib'
if meta:
to_edit = 'meta'

@ -21,7 +21,7 @@ def command(config, ui, bib_format, references):
:param bib_format (in 'bibtex', 'yaml')
"""
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)]
if len(papers) == 0:
papers = rp.all_papers()

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

@ -19,6 +19,7 @@ from ... import repo
from ...paper import NoDocumentFile
from ... import configs
from ... import files
from ...commands.helpers import add_references_argument, parse_reference
TEXNOTE_SECTION = 'texnote'
TEXNOTE_SAMPLE_FILE = os.path.join(os.path.dirname(__file__), 'note_sample.tex')
@ -26,8 +27,8 @@ TEXNOTE_DIR = 'texnote'
def parser(subparsers, config):
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)
add_references_argument(parser, single=True)
return parser
@ -43,7 +44,7 @@ def command(config, ui, ref, view):
def open_texnote(config, ui, ref):
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'):
texnote_dir = os.path.join(rp.papersdir, TEXNOTE_DIR)

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

@ -72,16 +72,16 @@ class TestUpdatePaper(TestRepo):
self.repo.update(fixtures.turing1950, old_citekey='Doe2013')
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'
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):
new = self.repo.paper_from_citekey('Turing1950')
new = self.repo.get_paper('Turing1950')
new.bibentry.fields['journal'] = u'Mind'
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):
self.repo.update(fixtures.doe2013, old_citekey='Turing1950')
@ -90,7 +90,7 @@ class TestUpdatePaper(TestRepo):
def test_update_new_key_updates(self):
self.repo.update(fixtures.doe2013, old_citekey='Turing1950')
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))
def test_update_new_key_moves_doc(self):

Loading…
Cancel
Save