Tools: add option to weekly log generator to only show a single day
Add a new CLI option `--date YYYY-MM-DD` to the weekly log generator. Using it will make it ignore the `--weeks-ago` parameter, and just show the activity for that specific day. This is just something I personally found useful, to occasionally inspect a specific date (WBSO daily log). Pull Request: https://projects.blender.org/blender/blender/pulls/141281
This commit is contained in:
@@ -62,6 +62,14 @@ else:
|
||||
|
||||
|
||||
def argparse_create() -> argparse.ArgumentParser:
|
||||
|
||||
def str_as_isodate(value: str) -> datetime.datetime:
|
||||
try:
|
||||
value_as_date = datetime.datetime.fromisoformat(value)
|
||||
except Exception as ex:
|
||||
raise argparse.ArgumentTypeError("Must be a valid ISO date (YYYY-MM-DD), failed: {!s}".format(ex))
|
||||
return value_as_date
|
||||
|
||||
parser = argparse.ArgumentParser(
|
||||
description="Generate Weekly Report",
|
||||
epilog="This script is typically used to help write weekly reports",
|
||||
@@ -87,6 +95,14 @@ def argparse_create() -> argparse.ArgumentParser:
|
||||
),
|
||||
)
|
||||
|
||||
parser.add_argument(
|
||||
"--date",
|
||||
dest="date",
|
||||
type=str_as_isodate,
|
||||
default="",
|
||||
help="Show only for this day (YYYY-MM-DD), and not for an entire week."
|
||||
)
|
||||
|
||||
parser.add_argument(
|
||||
"--hash-length",
|
||||
dest="hash_length",
|
||||
@@ -108,6 +124,7 @@ def argparse_create() -> argparse.ArgumentParser:
|
||||
def report_personal_weekly_get(
|
||||
username: str,
|
||||
start: datetime.datetime,
|
||||
num_days: int,
|
||||
*,
|
||||
hash_length: int,
|
||||
verbose: bool = True,
|
||||
@@ -162,7 +179,7 @@ def report_personal_weekly_get(
|
||||
|
||||
user_data: dict[str, Any] = gitea_user_get(username)
|
||||
|
||||
for i in range(7):
|
||||
for i in range(num_days):
|
||||
date_curr = start + datetime.timedelta(days=i)
|
||||
date_curr_str = date_curr.strftime("%Y-%m-%d")
|
||||
print_progress(f"Requesting activity of {date_curr_str}")
|
||||
@@ -440,28 +457,39 @@ def main() -> None:
|
||||
if not username:
|
||||
return
|
||||
|
||||
# end_date = datetime.datetime(2020, 3, 14)
|
||||
end_date = datetime.datetime.now() - datetime.timedelta(weeks=(args.weeks_ago - 1))
|
||||
weekday = end_date.weekday()
|
||||
if args.date:
|
||||
num_days = 1 # Show only one day.
|
||||
start_date = args.date
|
||||
start_date_str = start_date.strftime('%B ') + str(start_date.day)
|
||||
|
||||
# Assuming I am lazy and making this at last moment or even later in worst case
|
||||
if weekday < 2:
|
||||
time_delta = 7 + weekday
|
||||
start_date = end_date - datetime.timedelta(days=time_delta, hours=end_date.hour)
|
||||
end_date -= datetime.timedelta(days=weekday, hours=end_date.hour)
|
||||
print(f"## {start_date_str}\n")
|
||||
else:
|
||||
time_delta = weekday
|
||||
start_date = end_date - datetime.timedelta(days=time_delta, hours=end_date.hour)
|
||||
num_days = 7 # Show an entire week.
|
||||
# end_date = datetime.datetime(2020, 3, 14)
|
||||
end_date = datetime.datetime.now() - datetime.timedelta(weeks=(args.weeks_ago - 1))
|
||||
weekday = end_date.weekday()
|
||||
|
||||
sunday = start_date + datetime.timedelta(days=6)
|
||||
# week = start_date.isocalendar()[1]
|
||||
start_date_str = start_date.strftime('%B ') + str(start_date.day)
|
||||
end_date_str = str(sunday.day) if start_date.month == sunday.month else sunday.strftime('%B ') + str(sunday.day)
|
||||
# Assuming I am lazy and making this at last moment or even later in worst case
|
||||
if weekday < 2:
|
||||
time_delta = 7 + weekday
|
||||
start_date = end_date - datetime.timedelta(days=time_delta, hours=end_date.hour)
|
||||
end_date -= datetime.timedelta(days=weekday, hours=end_date.hour)
|
||||
else:
|
||||
time_delta = weekday
|
||||
start_date = end_date - datetime.timedelta(days=time_delta, hours=end_date.hour)
|
||||
|
||||
sunday = start_date + datetime.timedelta(days=6)
|
||||
|
||||
# week = start_date.isocalendar()[1]
|
||||
start_date_str = start_date.strftime('%B ') + str(start_date.day)
|
||||
end_date_str = str(sunday.day) if start_date.month == sunday.month else sunday.strftime('%B ') + str(sunday.day)
|
||||
|
||||
print(f"## {start_date_str} - {end_date_str}\n")
|
||||
|
||||
print(f"## {start_date_str} - {end_date_str}\n")
|
||||
report_personal_weekly_get(
|
||||
username,
|
||||
start_date,
|
||||
num_days,
|
||||
hash_length=args.hash_length,
|
||||
verbose=args.verbose,
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user