removes some bugs
This commit is contained in:
@@ -27,31 +27,40 @@ def main(opts):
|
|||||||
# TODO: gracefully fail if camera is not writable.
|
# TODO: gracefully fail if camera is not writable.
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
# Store the content list before grabbing
|
||||||
|
camera_files = camera.read_content()
|
||||||
|
new_files = {}
|
||||||
if opts.grab: # Grab new files from camera
|
if opts.grab: # Grab new files from camera
|
||||||
# TODO: gracefully fail if camera is not readable.
|
# TODO: gracefully fail if camera is not readable.
|
||||||
print_success("Grabbing...")
|
print_success("Grabbing...")
|
||||||
camera_files = camera.read_content()
|
|
||||||
for ext, backup in backups.items():
|
for ext, backup in backups.items():
|
||||||
bkp_files = backup.read_content(exclude_trash=False)
|
bkp_files = backup.read_content(exclude_trash=False)
|
||||||
with_ext = camera_files.filter_by_ext(ext)
|
with_ext = camera_files.filter_by_ext(ext)
|
||||||
new_files = with_ext.difference(bkp_files)
|
new_files[ext] = with_ext.difference(bkp_files)
|
||||||
backup.copy_content(new_files)
|
backup.copy_content(new_files[ext])
|
||||||
if ext in imports:
|
if ext in imports:
|
||||||
imports[ext].copy_content(new_files)
|
imports[ext].copy_content(new_files[ext])
|
||||||
|
|
||||||
if opts.sync: # Synchronize deleted files
|
if opts.sync: # Synchronize deleted files
|
||||||
print_success("Syncing...")
|
print_success("Syncing...")
|
||||||
imported = find_imported()
|
imported = find_imported()
|
||||||
for ext, backup in backups.items():
|
for ext, backup in backups.items():
|
||||||
with_ext = imported.filter_by_ext(ext)
|
with_ext = imported.filter_by_ext(ext)
|
||||||
deleted = backup.difference(with_ext)
|
deleted = backup.read_content().difference(with_ext)
|
||||||
|
# Prevent from trashing new (thus not yet imported) files
|
||||||
|
deleted.difference(new_files[ext])
|
||||||
backup.trash_content(deleted)
|
backup.trash_content(deleted)
|
||||||
if opts.update_card:
|
if opts.update_card:
|
||||||
deleted = camera.difference(with_ext)
|
# Use content list before grabbing
|
||||||
|
# to avoid deleting new files
|
||||||
|
deleted = camera_files.difference(with_ext)
|
||||||
camera.remove_content(deleted)
|
camera.remove_content(deleted)
|
||||||
|
|
||||||
if opts.wipe_card: # Wipe the camera memory
|
if opts.wipe_card: # Remove all files from camera
|
||||||
pass
|
on_card = camera.read_content()
|
||||||
|
for ext in backups:
|
||||||
|
to_delete = on_card.filter_by_ext(ext)
|
||||||
|
camera.remove_content(to_delete)
|
||||||
|
|
||||||
if opts.clean_trash: # Clean the bins
|
if opts.clean_trash: # Clean the bins
|
||||||
print_success("Cleaning...")
|
print_success("Cleaning...")
|
||||||
|
|||||||
@@ -4,6 +4,8 @@ import shutil
|
|||||||
import os
|
import os
|
||||||
import time
|
import time
|
||||||
|
|
||||||
|
from .utils import print_warning
|
||||||
|
|
||||||
|
|
||||||
class Content(dict):
|
class Content(dict):
|
||||||
|
|
||||||
@@ -100,4 +102,4 @@ class Backup(Store):
|
|||||||
self.trash.move_content(content)
|
self.trash.move_content(content)
|
||||||
|
|
||||||
def clean_trash(self):
|
def clean_trash(self):
|
||||||
raise NotImplementedError
|
print_warning("Fake cleaning !")
|
||||||
|
|||||||
@@ -27,6 +27,14 @@ class TestContent(unittest.TestCase):
|
|||||||
('test2.jpg', Path("~/test2.jpg")),
|
('test2.jpg', Path("~/test2.jpg")),
|
||||||
('test4.mp4', Path("~/test4.mp4")),
|
('test4.mp4', Path("~/test4.mp4")),
|
||||||
)))
|
)))
|
||||||
|
diff = self.second.difference(self.first)
|
||||||
|
self.assertEqual(
|
||||||
|
diff,
|
||||||
|
Content())
|
||||||
|
|
||||||
|
def test_difference_with_empty_returns_all(self):
|
||||||
|
diff = self.first.difference(Content())
|
||||||
|
self.assertEqual(diff, self.first)
|
||||||
|
|
||||||
def test_filter_by_ext_that_exists(self):
|
def test_filter_by_ext_that_exists(self):
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
|
|||||||
Reference in New Issue
Block a user