Adds new attach command.

Adds command to associate a document (pdf, ...) to an existing paper
(same copy option than add and import commands).
main
Olivier Mangin 12 years ago
parent 2fdf95c785
commit 06ea3627f4

@ -9,3 +9,4 @@ import edit_cmd
import remove_cmd
import websearch_cmd
import tags_cmd
import attach_cmd

@ -0,0 +1,34 @@
from .. import repo
from .. import configs
from .helpers import (add_references_argument, parse_reference,
add_docfile_to_paper)
def parser(subparsers, config):
parser = subparsers.add_parser('attach',
help='attach a document to an existing paper')
parser.add_argument('-c', '--copy', action='store_true', default=None,
help="copy document files into library directory (default)")
parser.add_argument('-C', '--nocopy', action='store_false', dest='copy',
help="don't copy document files (opposite of -c)")
add_references_argument(parser, single=True)
parser.add_argument('document', help='pdf or ps file')
return parser
def command(config, ui, copy, reference, document):
"""
:param bibfile: bibtex file (in .bib, .bibml or .yaml format.
:param docfile: path (no url yet) to a pdf or ps file
"""
if copy is None:
copy = config.get(configs.MAIN_SECTION, 'import-copy')
rp = repo.Repository.from_directory(config)
key = parse_reference(ui, rp, reference)
paper = rp.get_paper(key)
try:
add_docfile_to_paper(rp, paper, docfile=document, copy=copy)
except ValueError, v:
ui.error(v.message)
ui.exit(1)
# TODO handle case where citekey exists

@ -1,6 +1,7 @@
from .. import files
from .. import color
from ..repo import InvalidReference
from ..paper import NoDocumentFile
def add_references_argument(parser, single=False):
@ -12,14 +13,18 @@ def add_references_argument(parser, single=False):
help="one or several reference to export (citekeysor numbers)")
def add_docfile_to_paper(repo, paper, docfile, copy=False):
if copy:
repo.import_document(paper.citekey, docfile)
else:
paper.set_external_document(docfile)
repo.add_or_update(paper)
def add_paper_with_docfile(repo, paper, docfile=None, copy=False):
repo.add_paper(paper)
if docfile is not None:
if copy:
repo.import_document(paper.citekey, docfile)
else:
paper.set_external_document(docfile)
repo.add_or_update(paper)
add_docfile_to_paper(repo, paper, docfile, copy=copy)
def extract_doc_path_from_bibdata(paper, ui):

@ -21,6 +21,7 @@ cmds = collections.OrderedDict([
('open', commands.open_cmd),
('websearch', commands.websearch_cmd),
('tags', commands.tags_cmd),
('attach', commands.attach_cmd),
])
config = configs.read_config()

Loading…
Cancel
Save