next 30 days

This commit is contained in:
Karl Hudgell 2025-03-03 08:37:45 +00:00
parent a052aac26d
commit a77c858634
3 changed files with 14 additions and 25 deletions

4
app.py
View File

@ -3,7 +3,7 @@ from flask import Flask, render_template, request, redirect, url_for, session, s
from flask_caching import Cache from flask_caching import Cache
import requests.auth import requests.auth
import os import os
from lib.datetime import filter_accounts_current_month, filter_accounts_expired from lib.datetime import filter_accounts_next_30_days, filter_accounts_expired
from lib.reqs import get_urls, get_user_accounts, add_user_account, delete_user_account, get_user_accounts_count from lib.reqs import get_urls, get_user_accounts, add_user_account, delete_user_account, get_user_accounts_count
from flask import send_from_directory from flask import send_from_directory
import requests import requests
@ -63,7 +63,7 @@ def home():
base_url = app.config["BASE_URL"] # Access base_url from the config base_url = app.config["BASE_URL"] # Access base_url from the config
all_accounts = get_user_accounts(base_url, session["auth_credentials"]) all_accounts = get_user_accounts(base_url, session["auth_credentials"])
count = len(all_accounts) count = len(all_accounts)
current_month_accounts = filter_accounts_current_month(all_accounts) current_month_accounts = filter_accounts_next_30_days(all_accounts)
expired_accounts = filter_accounts_expired(all_accounts) expired_accounts = filter_accounts_expired(all_accounts)
return render_template( return render_template(
"home.html", "home.html",

View File

@ -1,40 +1,29 @@
from datetime import datetime from datetime import datetime, timedelta
from typing import List, Dict from typing import List, Dict
def filter_accounts_current_month(accounts: List[Dict[str, int]]) -> List[Dict[str, int]]: def filter_accounts_next_30_days(accounts: List[Dict[str, int]]) -> List[Dict[str, int]]:
"""Filter accounts whose expiry date falls within the current month. """Filter accounts whose expiry date falls within the next 30 days.
Args: 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. an 'expiaryDate' key with an epoch timestamp as its value.
Returns: Returns:
List[Dict[str, int]]: A list of accounts expiring in the current month. List[Dict[str, int]]: A list of accounts expiring within the next 30 days.
""" """
# Get the start of the current month
now = datetime.now() now = datetime.now()
start_of_month = datetime(now.year, now.month, 1) thirty_days_later = now + timedelta(days=30)
# Determine the start of the next month # Convert current time and 30 days later to epoch timestamps
if now.month == 12: now_timestamp = int(now.timestamp())
# If the current month is December, next month is January of the next year thirty_days_later_timestamp = int(thirty_days_later.timestamp())
start_of_next_month = datetime(now.year + 1, 1, 1)
else:
# Otherwise, the next month is the following month of the same year
start_of_next_month = datetime(now.year, now.month + 1, 1)
# Convert start and end of the month to epoch timestamps # Filter accounts with expiryDate within the next 30 days
start_of_month_timestamp = int(start_of_month.timestamp()) return [
start_of_next_month_timestamp = int(start_of_next_month.timestamp())
# Filter accounts with expiryDate in the current month
accounts_in_current_month = [
account for account in accounts account for account in accounts
if start_of_month_timestamp <= account['expiaryDate'] < start_of_next_month_timestamp if now_timestamp <= account['expiaryDate'] < thirty_days_later_timestamp
] ]
return accounts_in_current_month
def filter_accounts_expired(accounts: List[Dict[str, int]]) -> List[Dict[str, int]]: def filter_accounts_expired(accounts: List[Dict[str, int]]) -> List[Dict[str, int]]:
"""Filter accounts whose expiry date has passed. """Filter accounts whose expiry date has passed.

View File

@ -38,7 +38,7 @@
<br> <br>
{% if current_month_accounts %} {% if current_month_accounts %}
<h3>Accounts Expiring This Month</h3> <h3>Accounts Expiring Within 30 Days</h3>
<table class="table table-bordered table-striped"> <table class="table table-bordered table-striped">
<thead class="thead-dark"> <thead class="thead-dark">
<tr> <tr>