KTVManager_UI/lib/datetime.py
2025-07-15 14:02:52 +01:00

49 lines
2.1 KiB
Python

from datetime import datetime, timedelta
from typing import List, Dict
def filter_accounts_next_30_days(accounts: List[Dict[str, int]]) -> List[Dict[str, int]]:
"""Filter accounts whose expiry date falls within the next 30 days.
Args:
accounts (List[Dict[str, int]]): A list of account dictionaries, each containing
an 'expiaryDate' key with an epoch timestamp as its value.
Returns:
List[Dict[str, int]]: A list of accounts expiring within the next 30 days.
"""
now = datetime.now()
thirty_days_later = now + timedelta(days=30)
now_timestamp = int(now.timestamp())
thirty_days_later_timestamp = int(thirty_days_later.timestamp())
result = []
today = now.date()
for account in accounts:
if now_timestamp <= account['expiaryDate'] < thirty_days_later_timestamp:
expiry_date = datetime.fromtimestamp(account['expiaryDate'])
account['expiaryDate_rendered'] = expiry_date.strftime('%d-%m-%Y')
expiry_date_date = expiry_date.date()
account['days_to_expiry'] = (expiry_date_date - today).days
result.append(account)
return result
def filter_accounts_expired(accounts: List[Dict[str, int]]) -> List[Dict[str, int]]:
"""Filter accounts whose expiry date has passed.
Args:
accounts (List[Dict[str, int]]): A list of account dictionaries, each containing
an 'expiaryDate' key with an epoch timestamp as its value.
Returns:
List[Dict[str, int]]: A list of accounts that have expired.
"""
# Get the current epoch timestamp
current_timestamp = int(datetime.now().timestamp())
# Filter accounts where the current date is greater than the expiryDate
expired_accounts = []
for account in accounts:
if account['expiaryDate'] < current_timestamp:
expiry_date = datetime.fromtimestamp(account['expiaryDate'])
account['expiaryDate_rendered'] = expiry_date.strftime('%d-%m-%Y')
expired_accounts.append(account)
return expired_accounts