Fixed --cleanup for empty export, #481

This commit is contained in:
Rhet Turnbull
2021-06-30 22:41:03 -07:00
parent fb723fb8b7
commit d1b1d20bcf
3 changed files with 84 additions and 38 deletions

View File

@@ -1,3 +1,3 @@
""" version info """
__version__ = "0.42.50"
__version__ = "0.42.51"

View File

@@ -1647,6 +1647,9 @@ def export(
previous_uuids = {uuid: 1 for uuid in export_db.get_previous_uuids()}
photos = [p for p in photos if p.uuid not in previous_uuids]
# store results of export
results = ExportResults()
if photos:
num_photos = len(photos)
# TODO: photos or photo appears several times, pull into a separate function
@@ -1658,8 +1661,6 @@ def export(
# because the original code used --original-name as an option
original_name = not current_name
results = ExportResults()
# set up for --add-export-to-album if needed
album_export = (
PhotosAlbum(add_exported_to_album, verbose=verbose_)
@@ -1834,6 +1835,31 @@ def export(
if fp is not None:
fp.close()
photo_str_total = "photos" if len(photos) != 1 else "photo"
if update:
summary = (
f"Processed: {len(photos)} {photo_str_total}, "
f"exported: {len(results.new)}, "
f"updated: {len(results.updated)}, "
f"skipped: {len(results.skipped)}, "
f"updated EXIF data: {len(results.exif_updated)}, "
)
else:
summary = (
f"Processed: {len(photos)} {photo_str_total}, "
f"exported: {len(results.exported)}, "
)
summary += f"missing: {len(results.missing)}, "
summary += f"error: {len(results.error)}"
if touch_file:
summary += f", touched date: {len(results.touched)}"
click.echo(summary)
stop_time = time.perf_counter()
click.echo(f"Elapsed time: {(stop_time-start_time):.3f} seconds")
else:
click.echo("Did not find any photos to export")
# cleanup files and do report if needed
if cleanup:
all_files = (
results.exported
@@ -1869,30 +1895,6 @@ def export(
verbose_(f"Writing export report to {report}")
write_export_report(report, results)
photo_str_total = "photos" if len(photos) != 1 else "photo"
if update:
summary = (
f"Processed: {len(photos)} {photo_str_total}, "
f"exported: {len(results.new)}, "
f"updated: {len(results.updated)}, "
f"skipped: {len(results.skipped)}, "
f"updated EXIF data: {len(results.exif_updated)}, "
)
else:
summary = (
f"Processed: {len(photos)} {photo_str_total}, "
f"exported: {len(results.exported)}, "
)
summary += f"missing: {len(results.missing)}, "
summary += f"error: {len(results.error)}"
if touch_file:
summary += f", touched date: {len(results.touched)}"
click.echo(summary)
stop_time = time.perf_counter()
click.echo(f"Elapsed time: {(stop_time-start_time):.3f} seconds")
else:
click.echo("Did not find any photos to export")
export_db.close()

View File

@@ -5324,6 +5324,50 @@ def test_export_cleanup():
assert not pathlib.Path("./foo/delete_me_too.txt").is_file()
def test_export_cleanup_empty_album():
"""test export with --cleanup flag with an empty album (#481)"""
import pathlib
import tempfile
from osxphotos.cli import export
runner = CliRunner()
cwd = os.getcwd()
# pylint: disable=not-context-manager
with runner.isolated_filesystem():
result = runner.invoke(export, [os.path.join(cwd, CLI_PHOTOS_DB), ".", "-V"])
assert result.exit_code == 0
# run cleanup with dry-run
with tempfile.TemporaryDirectory() as tempdir:
result = runner.invoke(
export,
[
os.path.join(cwd, CLI_PHOTOS_DB),
tempdir,
"-V",
"--uuid",
UUID_LOCATION,
],
)
# run cleanup with an empty folder
result = runner.invoke(
export,
[
os.path.join(cwd, CLI_PHOTOS_DB),
tempdir,
"-V",
"--update",
"--cleanup",
"--album",
"EmptyAlbum",
],
)
assert "Did not find any photos to export" in result.output
assert "Deleted: 1 file" in result.output
def test_save_load_config():
"""test --save-config, --load-config"""
import glob