52 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			52 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| from datetime import datetime, timedelta
 | |
| from typing import List, Dict, Any
 | |
| 
 | |
| def filter_accounts_next_30_days(accounts: List[Dict[str, Any]]) -> List[Dict[str, Any]]:
 | |
|     """Filters accounts expiring within the next 30 days.
 | |
| 
 | |
|     Args:
 | |
|         accounts: A list of account dictionaries, each with an 'expiaryDate'
 | |
|             (epoch timestamp).
 | |
| 
 | |
|     Returns:
 | |
|         A list of accounts expiring within the next 30 days, with added
 | |
|         'expiaryDate_rendered' and 'days_to_expiry' keys.
 | |
|     """
 | |
|     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, Any]]) -> List[Dict[str, Any]]:
 | |
|     """Filters accounts that have already expired.
 | |
| 
 | |
|     Args:
 | |
|         accounts: A list of account dictionaries, each with an 'expiaryDate'
 | |
|             (epoch timestamp).
 | |
| 
 | |
|     Returns:
 | |
|         A list of expired accounts with an added 'expiaryDate_rendered' key.
 | |
|     """
 | |
|     current_timestamp = int(datetime.now().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
 |