switched to file handling of previous_text
This commit is contained in:
@@ -46,7 +46,6 @@ class model(dict):
|
||||
'trigger_on_add': True, # Allow a trigger if there are additions from the last snapshot
|
||||
'trigger_on_del': True, # Allow a trigger if there are deletions from the last snapshot
|
||||
'proxy': None, # Preferred proxy connection
|
||||
'previous_text': "", # Previous text from the last snapshot, this is updated after every fetch including if a diff was triggered or not
|
||||
# Re #110, so then if this is set to None, we know to use the default value instead
|
||||
# Requires setting to None on submit if it's the same as the default
|
||||
# Should be all None by default, so we use the system default in this case.
|
||||
@@ -155,6 +154,43 @@ class model(dict):
|
||||
#@todo bump static cache of the last timestamp so we dont need to examine the file to set a proper ''viewed'' status
|
||||
return snapshot_fname
|
||||
|
||||
# Save previous text snapshot for diffing
|
||||
def save_previous_text(self, contents):
|
||||
from os import mkdir
|
||||
import logging
|
||||
|
||||
output_path = "{}/{}".format(self.__datastore_path, self['uuid'])
|
||||
|
||||
# Incase the operator deleted it, check and create.
|
||||
if not os.path.isdir(output_path):
|
||||
mkdir(output_path)
|
||||
|
||||
snapshot_fname = "{}/previous.txt".format(output_path)
|
||||
logging.debug("Saving previous text {}".format(snapshot_fname))
|
||||
|
||||
with open(snapshot_fname, 'wb') as f:
|
||||
f.write(contents)
|
||||
f.close()
|
||||
|
||||
return snapshot_fname
|
||||
|
||||
# Get previous text snapshot for diffing
|
||||
def get_previous_text(self):
|
||||
from os import path
|
||||
|
||||
output_path = "{}/{}".format(self.__datastore_path, self['uuid'])
|
||||
|
||||
snapshot_fname = "{}/previous.txt".format(output_path)
|
||||
if not path.isfile(snapshot_fname):
|
||||
self.save_previous_text(b'')
|
||||
return ""
|
||||
|
||||
with open(snapshot_fname, 'rb') as f:
|
||||
contents = f.read()
|
||||
f.close()
|
||||
|
||||
return contents
|
||||
|
||||
@property
|
||||
def has_empty_checktime(self):
|
||||
# using all() + dictionary comprehension
|
||||
@@ -194,7 +230,7 @@ class model(dict):
|
||||
}
|
||||
|
||||
# get diff types using difflib
|
||||
cruncher = difflib.SequenceMatcher(isjunk=lambda x: x in " \\t", a=self.get("previous_text", ""), b=str(new_text))
|
||||
cruncher = difflib.SequenceMatcher(isjunk=lambda x: x in " \\t", a=self.get_previous_text(), b=str(new_text))
|
||||
for tag, alo, ahi, blo, bhi in cruncher.get_opcodes():
|
||||
if tag == 'delete':
|
||||
diff_types["del"] = True
|
||||
|
||||
Reference in New Issue
Block a user