mirror of
https://github.com/arsenetar/dupeguru.git
synced 2025-03-09 21:24:36 +00:00
Added a is_modified flag to Results.
This commit is contained in:
parent
a5797a2350
commit
1b6b058097
@ -33,6 +33,7 @@ class Results(Markable):
|
||||
self.__marked_size = 0
|
||||
self.data = data_module
|
||||
self.problems = [] # (dupe, error_msg)
|
||||
self.is_modified = False
|
||||
|
||||
def _did_mark(self, dupe):
|
||||
self.__marked_size += dupe.size
|
||||
@ -115,6 +116,7 @@ class Results(Markable):
|
||||
self.__group_of_duplicate[dupe] = g
|
||||
if not hasattr(dupe, 'is_ref'):
|
||||
dupe.is_ref = False
|
||||
self.is_modified = True
|
||||
old_filters = nonone(self.__filters, [])
|
||||
self.apply_filter(None)
|
||||
for filter_str in old_filters:
|
||||
@ -216,6 +218,7 @@ class Results(Markable):
|
||||
self.groups = groups
|
||||
for dupe_file in marked:
|
||||
self.mark(dupe_file)
|
||||
self.is_modified = False
|
||||
|
||||
def make_ref(self, dupe):
|
||||
g = self.get_group_of_duplicate(dupe)
|
||||
@ -229,6 +232,7 @@ class Results(Markable):
|
||||
self.__total_count -= 1
|
||||
self.__total_size -= dupe.size
|
||||
self.__dupes = None
|
||||
self.is_modified = True
|
||||
|
||||
def perform_on_marked(self, func, remove_from_results):
|
||||
# Performs `func` on all marked dupes. If an EnvironmentError is raised during the call,
|
||||
@ -269,6 +273,7 @@ class Results(Markable):
|
||||
for group in affected_groups:
|
||||
group.discard_matches()
|
||||
self.__dupes = None
|
||||
self.is_modified = True
|
||||
|
||||
def save_to_xml(self, outfile):
|
||||
self.apply_filter(None)
|
||||
@ -299,6 +304,7 @@ class Results(Markable):
|
||||
tree = etree.ElementTree(root)
|
||||
with FileOrPath(outfile, 'wb') as fp:
|
||||
tree.write(fp, encoding='utf-8')
|
||||
self.is_modified = False
|
||||
|
||||
def sort_dupes(self, key, asc=True, delta=False):
|
||||
if not self.__dupes:
|
||||
|
@ -70,6 +70,9 @@ class TCResultsEmpty(TestCase):
|
||||
root = doc.getroot()
|
||||
eq_('results', root.tag)
|
||||
|
||||
def test_is_modified(self):
|
||||
assert not self.results.is_modified
|
||||
|
||||
|
||||
class TCResultsWithSomeGroups(TestCase):
|
||||
def setUp(self):
|
||||
@ -201,6 +204,56 @@ class TCResultsWithSomeGroups(TestCase):
|
||||
self.results.remove_duplicates([o2])
|
||||
eq_(2,len(self.results.dupes))
|
||||
|
||||
def test_is_modified(self):
|
||||
# Changing the groups sets the modified flag
|
||||
assert self.results.is_modified
|
||||
|
||||
def test_is_modified_after_save_and_load(self):
|
||||
# Saving/Loading a file sets the modified flag back to False
|
||||
def get_file(path):
|
||||
return [f for f in self.objects if str(f.path) == path][0]
|
||||
|
||||
f = io.BytesIO()
|
||||
self.results.save_to_xml(f)
|
||||
assert not self.results.is_modified
|
||||
self.results.groups = self.groups # sets the flag back
|
||||
f.seek(0)
|
||||
self.results.load_from_xml(f, get_file)
|
||||
assert not self.results.is_modified
|
||||
|
||||
|
||||
class ResultsWithSavedResults(TestCase):
|
||||
def setUp(self):
|
||||
self.results = Results(data)
|
||||
self.objects,self.matches,self.groups = GetTestGroups()
|
||||
self.results.groups = self.groups
|
||||
self.f = io.BytesIO()
|
||||
self.results.save_to_xml(self.f)
|
||||
self.f.seek(0)
|
||||
|
||||
def test_is_modified(self):
|
||||
# Saving a file sets the modified flag back to False
|
||||
assert not self.results.is_modified
|
||||
|
||||
def test_is_modified_after_load(self):
|
||||
# Loading a file sets the modified flag back to False
|
||||
def get_file(path):
|
||||
return [f for f in self.objects if str(f.path) == path][0]
|
||||
|
||||
self.results.groups = self.groups # sets the flag back
|
||||
self.results.load_from_xml(self.f, get_file)
|
||||
assert not self.results.is_modified
|
||||
|
||||
def test_is_modified_after_remove(self):
|
||||
# Removing dupes sets the modified flag
|
||||
self.results.remove_duplicates([self.results.groups[0].dupes[0]])
|
||||
assert self.results.is_modified
|
||||
|
||||
def test_is_modified_after_make_ref(self):
|
||||
# Making a dupe ref sets the modified flag
|
||||
self.results.make_ref(self.results.groups[0].dupes[0])
|
||||
assert self.results.is_modified
|
||||
|
||||
|
||||
class TCResultsMarkings(TestCase):
|
||||
def setUp(self):
|
||||
|
Loading…
x
Reference in New Issue
Block a user