Prevent filtered delete from deleting journal (#935)

* Prevent filtered deletion from deleting entire journal #932 and add lots of deletion tests
* Undo removal of deletion feature
* Use more performant deletion
This commit is contained in:
Micah Jerome Ellison 2020-05-06 13:47:39 -07:00 committed by GitHub
parent cfbebe0d38
commit d9ebfe852b
6 changed files with 191 additions and 17 deletions

View file

@ -187,14 +187,12 @@ def parse_args(args=None):
action="store_true",
)
# Disabling this momentarily due to critical bug
# @see https://github.com/jrnl-org/jrnl/issues/932
# exporting.add_argument(
# "--delete",
# dest="delete",
# action="store_true",
# help="Opens an interactive interface for deleting entries.",
# )
exporting.add_argument(
"--delete",
dest="delete",
action="store_true",
help="Opens an interactive interface for deleting entries.",
)
# Handle '-123' as a shortcut for '-n 123'
num = re.compile(r"^-(\d+)$")
@ -304,9 +302,6 @@ def configure_logger(debug=False):
def run(manual_args=None):
args = parse_args(manual_args)
# temporary until bring back --delete
args.delete = False # TODO: remove me
configure_logger(args.debug)
if args.version:
version_str = f"{jrnl.__title__} version {jrnl.__version__}"
@ -341,6 +336,7 @@ def run(manual_args=None):
config = util.scope_config(config, journal_name)
log.debug('Using journal "%s"', journal_name)
mode_compose, mode_export, mode_import = guess_mode(args, config)
# How to quit writing?
@ -484,5 +480,16 @@ def run(manual_args=None):
journal.write()
elif args.delete:
journal.prompt_delete_entries()
journal.write()
if journal.entries:
entries_to_delete = journal.prompt_delete_entries()
if entries_to_delete:
journal.entries = old_entries
journal.delete_entries(entries_to_delete)
journal.write()
else:
print(
"No entries deleted, because the search returned no results.",
file=sys.stderr,
)