|
@@ -1,17 +1,28 @@
|
|
from datetime import datetime
|
|
from datetime import datetime
|
|
-from flask import render_template
|
|
|
|
|
|
+from typing import List, Dict
|
|
|
|
|
|
-def filter_accounts_current_month(accounts):
|
|
|
|
- # Get the start and end of the current month
|
|
|
|
|
|
+def filter_accounts_current_month(accounts: List[Dict[str, int]]) -> List[Dict[str, int]]:
|
|
|
|
+ """Filter accounts whose expiry date falls within the current month.
|
|
|
|
+
|
|
|
|
+ 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 in the current month.
|
|
|
|
+ """
|
|
|
|
+ # Get the start of the current month
|
|
now = datetime.now()
|
|
now = datetime.now()
|
|
start_of_month = datetime(now.year, now.month, 1)
|
|
start_of_month = datetime(now.year, now.month, 1)
|
|
|
|
+
|
|
|
|
+ # Determine the start of the next month
|
|
if now.month == 12:
|
|
if now.month == 12:
|
|
- # If current month is December, next month is January of the next year
|
|
|
|
|
|
+ # If the current month is December, next month is January of the next year
|
|
start_of_next_month = datetime(now.year + 1, 1, 1)
|
|
start_of_next_month = datetime(now.year + 1, 1, 1)
|
|
else:
|
|
else:
|
|
- # Otherwise, next month is just the next month of the same year
|
|
|
|
|
|
+ # Otherwise, the next month is the following month of the same year
|
|
start_of_next_month = datetime(now.year, now.month + 1, 1)
|
|
start_of_next_month = datetime(now.year, now.month + 1, 1)
|
|
-
|
|
|
|
|
|
+
|
|
# Convert start and end of the month to epoch timestamps
|
|
# Convert start and end of the month to epoch timestamps
|
|
start_of_month_timestamp = int(start_of_month.timestamp())
|
|
start_of_month_timestamp = int(start_of_month.timestamp())
|
|
start_of_next_month_timestamp = int(start_of_next_month.timestamp())
|
|
start_of_next_month_timestamp = int(start_of_next_month.timestamp())
|
|
@@ -23,3 +34,24 @@ def filter_accounts_current_month(accounts):
|
|
]
|
|
]
|
|
|
|
|
|
return accounts_in_current_month
|
|
return accounts_in_current_month
|
|
|
|
+
|
|
|
|
+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 = [
|
|
|
|
+ account for account in accounts
|
|
|
|
+ if account['expiaryDate'] < current_timestamp
|
|
|
|
+ ]
|
|
|
|
+
|
|
|
|
+ return expired_accounts
|