refactor metadata

This commit is contained in:
Tim Bendt
2025-05-05 09:00:51 -06:00
parent f56625c9cf
commit 7176d0baf7
4 changed files with 151 additions and 32 deletions

39
maildir_gtd/utils.py Normal file
View File

@@ -0,0 +1,39 @@
from datetime import datetime, timedelta
from typing import List, Dict
def group_envelopes_by_date(envelopes: List[Dict]) -> List[Dict]:
"""Group envelopes by date and add headers for each group."""
grouped_envelopes = []
today = datetime.now()
yesterday = today - timedelta(days=1)
start_of_week = today - timedelta(days=today.weekday())
start_of_last_week = start_of_week - timedelta(weeks=1)
start_of_month = today.replace(day=1)
start_of_last_month = (start_of_month - timedelta(days=1)).replace(day=1)
def get_group_label(date: datetime) -> str:
if date.date() == today.date():
return "Today"
elif date.date() == yesterday.date():
return "Yesterday"
elif date >= start_of_week:
return "This Week"
elif date >= start_of_last_week:
return "Last Week"
elif date >= start_of_month:
return "This Month"
elif date >= start_of_last_month:
return "Last Month"
else:
return "Older"
current_group = None
for envelope in envelopes:
envelope_date = datetime.strptime(envelope['date'].split('+')[0], "%Y-%m-%d %H:%M")
group_label = get_group_label(envelope_date)
if group_label != current_group:
grouped_envelopes.append({"type": "header", "label": group_label})
current_group = group_label
grouped_envelopes.append(envelope)
return grouped_envelopes