diff --git a/lib/datetime.py b/lib/datetime.py index 48efe5a..c3e1496 100644 --- a/lib/datetime.py +++ b/lib/datetime.py @@ -3,34 +3,34 @@ 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 + 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) - - # Convert current time and 30 days later to epoch timestamps now_timestamp = int(now.timestamp()) thirty_days_later_timestamp = int(thirty_days_later.timestamp()) + + result = [] + today = now.date() - # Filter accounts with expiryDate within the next 30 days - return [ - account for account in accounts - if now_timestamp <= account['expiaryDate'] < thirty_days_later_timestamp - ] + 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 + 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. """ @@ -38,9 +38,11 @@ def filter_accounts_expired(accounts: List[Dict[str, int]]) -> List[Dict[str, in current_timestamp = int(datetime.now().timestamp()) # Filter accounts where the current date is greater than the expiryDate - expired_accounts = [ - account for account in accounts - if account['expiaryDate'] < current_timestamp - ] + 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 diff --git a/templates/home.html b/templates/home.html index 2cd254e..01b830f 100644 --- a/templates/home.html +++ b/templates/home.html @@ -23,7 +23,7 @@ {{ account.stream }} {{ account.username }} - {{ account.expiaryDate_rendered }} + {{ account.expiaryDate_rendered }} {% if account.days_to_expiry is defined %}({{ account.days_to_expiry }} days){% endif %} {% endfor %}