diff --git a/conservancy_beancount/tools/extract_odf_links.py b/conservancy_beancount/tools/extract_odf_links.py index d094bfc..57fe52b 100644 --- a/conservancy_beancount/tools/extract_odf_links.py +++ b/conservancy_beancount/tools/extract_odf_links.py @@ -84,7 +84,6 @@ read from stdin because it needs to know document paths to resolve links. return parser.parse_args(arglist) def extract_links(odf_path: Path) -> Iterator[Path]: - odf_root = odf_path.parent.resolve() with odf_path.open('rb') as odf_file: odf_doc = odf.opendocument.load(odf_file) 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(): path = (odf_path / path).resolve() try: - path.relative_to(odf_root) + path.relative_to(odf_path) 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 def main(arglist: Optional[Sequence[str]]=None, diff --git a/setup.py b/setup.py index 02e5580..de8c6d6 100755 --- a/setup.py +++ b/setup.py @@ -5,7 +5,7 @@ from setuptools import setup setup( name='conservancy_beancount', description="Plugin, library, and reports for reading Conservancy's books", - version='1.7.0', + version='1.7.1', author='Software Freedom Conservancy', author_email='info@sfconservancy.org', license='GNU AGPLv3+', diff --git a/tests/repository/LinksReport.ods b/tests/repository/LinksReport.ods index 79d257c..2748c5e 100644 Binary files a/tests/repository/LinksReport.ods and b/tests/repository/LinksReport.ods differ