mirror of
https://github.com/jrnl-org/jrnl.git
synced 2025-06-29 22:16:13 +02:00
Add new -today-in-history
, -month
, -day
, and -year
search filters (#1145)
* Introduce -reminisce, -month, -day, and -year * Update expected_args in parse_args tests * Add check before creating compare_d * Misc changes * Implement testing for -month, -day, -year, and -reminisce * Compress tests into one Scenario Outline * Fix failing tests by updating dates_similar journal * Create 'we set current date and time to' step * Use time.parse in reminisce * Update dates_similar journal * Make 'Searching in a journal' test shorter * Lint * Implement reminiscing test * Add combination tests * Finalize tests * Finalize pytests * Simplify reminisce tests * Change reminsice help (since it also shows today's entries) * Re-do tests; use various tests * Remove old test data * Better scenario description * Standardize format for compare_d * Rename -reminisce to -today-in-history
This commit is contained in:
parent
18058c74e5
commit
f0e8fa2060
6 changed files with 184 additions and 0 deletions
|
@ -189,6 +189,9 @@ class Journal:
|
|||
def filter(
|
||||
self,
|
||||
tags=[],
|
||||
month=None,
|
||||
day=None,
|
||||
year=None,
|
||||
start_date=None,
|
||||
end_date=None,
|
||||
starred=False,
|
||||
|
@ -220,11 +223,19 @@ class Journal:
|
|||
if contains:
|
||||
contains_lower = contains.casefold()
|
||||
|
||||
# Create datetime object for comparison below
|
||||
# this approach allows various formats
|
||||
if month or day or year:
|
||||
compare_d = time.parse(f"{month or 1}.{day or 1}.{year or 1}")
|
||||
|
||||
result = [
|
||||
entry
|
||||
for entry in self.entries
|
||||
if (not tags or tagged(entry.tags))
|
||||
and (not starred or entry.starred)
|
||||
and (not month or entry.date.month == compare_d.month)
|
||||
and (not day or entry.date.day == compare_d.day)
|
||||
and (not year or entry.date.year == compare_d.year)
|
||||
and (not start_date or entry.date >= start_date)
|
||||
and (not end_date or entry.date <= end_date)
|
||||
and (not exclude or not excluded(entry.tags))
|
||||
|
|
24
jrnl/args.py
24
jrnl/args.py
|
@ -176,6 +176,30 @@ def parse_args(args=[]):
|
|||
reading.add_argument(
|
||||
"-on", dest="on_date", metavar="DATE", help="Show entries on this date"
|
||||
)
|
||||
reading.add_argument(
|
||||
"-today-in-history",
|
||||
dest="today_in_history",
|
||||
action="store_true",
|
||||
help="Show entries of today over the years",
|
||||
)
|
||||
reading.add_argument(
|
||||
"-month",
|
||||
dest="month",
|
||||
metavar="DATE",
|
||||
help="Show entries on this month of any year",
|
||||
)
|
||||
reading.add_argument(
|
||||
"-day",
|
||||
dest="day",
|
||||
metavar="DATE",
|
||||
help="Show entries on this day of any month",
|
||||
)
|
||||
reading.add_argument(
|
||||
"-year",
|
||||
dest="year",
|
||||
metavar="DATE",
|
||||
help="Show entries of a specific year",
|
||||
)
|
||||
reading.add_argument(
|
||||
"-from",
|
||||
dest="start_date",
|
||||
|
|
13
jrnl/jrnl.py
13
jrnl/jrnl.py
|
@ -15,6 +15,7 @@ from .config import get_config_path
|
|||
from .editor import get_text_from_editor
|
||||
from .editor import get_text_from_stdin
|
||||
from .exception import UserAbort
|
||||
from . import time
|
||||
|
||||
|
||||
def run(args):
|
||||
|
@ -77,6 +78,10 @@ def _is_write_mode(args, config, **kwargs):
|
|||
args.edit,
|
||||
args.export,
|
||||
args.end_date,
|
||||
args.today_in_history,
|
||||
args.month,
|
||||
args.day,
|
||||
args.year,
|
||||
args.limit,
|
||||
args.on_date,
|
||||
args.short,
|
||||
|
@ -206,8 +211,16 @@ def _search_journal(args, journal, **kwargs):
|
|||
if args.on_date:
|
||||
args.start_date = args.end_date = args.on_date
|
||||
|
||||
if args.today_in_history:
|
||||
now = time.parse("now")
|
||||
args.day = now.day
|
||||
args.month = now.month
|
||||
|
||||
journal.filter(
|
||||
tags=args.text,
|
||||
month=args.month,
|
||||
day=args.day,
|
||||
year=args.year,
|
||||
start_date=args.start_date,
|
||||
end_date=args.end_date,
|
||||
strict=args.strict,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue