Added message showing the number of search results

Modified _search_journal() to return a bool based upon whether
any filter args were passed to the program.

Added _print_entries_found_count() which prints a message
based upon the number of entries found and prints warnings
if the user was trying to edit or delete.
This commit is contained in:
apainintheneck 2022-06-27 19:21:11 -07:00
parent 72d1a044d9
commit 9c38e066f2
2 changed files with 54 additions and 10 deletions

View file

@ -173,8 +173,9 @@ def search_mode(args, journal, **kwargs):
"old_entries": journal.entries, "old_entries": journal.entries,
} }
# Filters the journal entries in place if _has_search_args(args):
_search_journal(**kwargs) _filter_journal_entries(**kwargs)
_print_entries_found_count(len(journal), args)
# Where do the search results go? # Where do the search results go?
if args.edit: if args.edit:
@ -196,6 +197,10 @@ def search_mode(args, journal, **kwargs):
_edit_search_results(**kwargs) _edit_search_results(**kwargs)
elif not journal:
# Bail out if there are no entries and we're not editing
return
elif args.change_time: elif args.change_time:
_change_time_search_results(**kwargs) _change_time_search_results(**kwargs)
@ -244,8 +249,28 @@ def _get_editor_template(config, **kwargs):
return template return template
def _search_journal(args, journal, **kwargs): def _has_search_args(args):
"""Search the journal with the given args""" return any(
(
args.on_date,
args.today_in_history,
args.text,
args.month,
args.day,
args.year,
args.start_date,
args.end_date,
args.strict,
args.starred,
args.excluded,
args.contains,
args.limit,
)
)
def _filter_journal_entries(args, journal, **kwargs):
"""Filter journal entries in-place based upon search args"""
if args.on_date: if args.on_date:
args.start_date = args.end_date = args.on_date args.start_date = args.end_date = args.on_date
@ -269,6 +294,27 @@ def _search_journal(args, journal, **kwargs):
journal.limit(args.limit) journal.limit(args.limit)
def _print_entries_found_count(count, args):
if count == 0:
if args.edit or args.change_time:
print_msg(Message(MsgText.NothingToModify, MsgStyle.WARNING))
elif args.delete:
print_msg(Message(MsgText.NothingToDelete, MsgStyle.WARNING))
else:
print_msg(Message(MsgText.NoEntriesFound, MsgStyle.NORMAL))
elif args.limit:
# Don't show count if the user expects a limited number of results
return
elif args.edit or not (args.change_time or args.delete):
# Don't show count if we are ONLY changing the time or deleting entries
my_msg = (
MsgText.EntryFoundCountSingular
if count == 1
else MsgText.EntryFoundCountPlural
)
print_msg(Message(my_msg, MsgStyle.NORMAL, {"num": count}))
def _other_entries(journal, entries): def _other_entries(journal, entries):
"""Find entries that are not in journal""" """Find entries that are not in journal"""
return [e for e in entries if e not in journal.entries] return [e for e in entries if e not in journal.entries]
@ -352,9 +398,6 @@ def _get_predit_stats(journal):
def _delete_search_results(journal, old_entries, **kwargs): def _delete_search_results(journal, old_entries, **kwargs):
if not journal.entries:
raise JrnlException(Message(MsgText.NothingToDelete, MsgStyle.ERROR))
entries_to_delete = journal.prompt_action_entries(MsgText.DeleteEntryQuestion) entries_to_delete = journal.prompt_action_entries(MsgText.DeleteEntryQuestion)
if entries_to_delete: if entries_to_delete:
@ -365,9 +408,6 @@ def _delete_search_results(journal, old_entries, **kwargs):
def _change_time_search_results(args, journal, old_entries, no_prompt=False, **kwargs): def _change_time_search_results(args, journal, old_entries, no_prompt=False, **kwargs):
if not journal.entries:
raise JrnlException(Message(MsgText.NothingToModify, MsgStyle.WARNING))
# separate entries we are not editing # separate entries we are not editing
other_entries = _other_entries(journal, old_entries) other_entries = _other_entries(journal, old_entries)

View file

@ -224,6 +224,10 @@ class MsgText(Enum):
No entries to modify, because the search returned no results No entries to modify, because the search returned no results
""" """
NoEntriesFound = "no entries found"
EntryFoundCountSingular = "{num} entry found"
EntryFoundCountPlural = "{num} entries found"
# --- Formats --- # # --- Formats --- #
HeadingsPastH6 = """ HeadingsPastH6 = """
Headings increased past H6 on export - {date} {title} Headings increased past H6 on export - {date} {title}