extract_odf_links: Don't print document-internal links.

This commit is contained in:
Brett Smith 2020-08-10 11:36:51 -04:00
parent b4dee2cf9a
commit 385f5a20da
3 changed files with 6 additions and 4 deletions

View file

@ -84,7 +84,6 @@ read from stdin because it needs to know document paths to resolve links.
return parser.parse_args(arglist) return parser.parse_args(arglist)
def extract_links(odf_path: Path) -> Iterator[Path]: def extract_links(odf_path: Path) -> Iterator[Path]:
odf_root = odf_path.parent.resolve()
with odf_path.open('rb') as odf_file: with odf_path.open('rb') as odf_file:
odf_doc = odf.opendocument.load(odf_file) odf_doc = odf.opendocument.load(odf_file)
for a_elem in odf_doc.getElementsByType(odf.text.A): for a_elem in odf_doc.getElementsByType(odf.text.A):
@ -95,9 +94,12 @@ def extract_links(odf_path: Path) -> Iterator[Path]:
if not path.is_absolute(): if not path.is_absolute():
path = (odf_path / path).resolve() path = (odf_path / path).resolve()
try: try:
path.relative_to(odf_root) path.relative_to(odf_path)
except ValueError: except ValueError:
logger.warning(f"link {path} is neither absolute nor relative to {odf_path}") pass
else:
# Link points to another document inside the ODF. Skip it.
continue
yield path yield path
def main(arglist: Optional[Sequence[str]]=None, def main(arglist: Optional[Sequence[str]]=None,

View file

@ -5,7 +5,7 @@ from setuptools import setup
setup( setup(
name='conservancy_beancount', name='conservancy_beancount',
description="Plugin, library, and reports for reading Conservancy's books", description="Plugin, library, and reports for reading Conservancy's books",
version='1.7.0', version='1.7.1',
author='Software Freedom Conservancy', author='Software Freedom Conservancy',
author_email='info@sfconservancy.org', author_email='info@sfconservancy.org',
license='GNU AGPLv3+', license='GNU AGPLv3+',

Binary file not shown.