add favicon

This commit is contained in:
Karl Hudgell 2024-11-05 08:09:08 +00:00
parent 5813317f6a
commit 860f6ab356
2 changed files with 88 additions and 56 deletions

134
app.py
View File

@ -2,109 +2,141 @@
from flask import Flask, render_template, request, redirect, url_for, session, flash from flask import Flask, render_template, request, redirect, url_for, session, flash
from flask_caching import Cache from flask_caching import Cache
import requests.auth import requests.auth
import os
from lib.datetime import filter_accounts_current_month from lib.datetime import filter_accounts_current_month
from lib.reqs import (get_urls, get_user_accounts, add_user_account, delete_user_account) from lib.reqs import get_urls, get_user_accounts, add_user_account, delete_user_account
from flask import send_from_directory
import requests import requests
import base64 import base64
from flask import Flask from flask import Flask
from config import DevelopmentConfig # or ProductionConfig from config import DevelopmentConfig # or ProductionConfig
app = Flask(__name__) app = Flask(__name__)
app.config.from_object(DevelopmentConfig) # Use DevelopmentConfig or ProductionConfig as needed app.config.from_object(
cache = Cache(app, config={'CACHE_TYPE': 'SimpleCache'}) DevelopmentConfig
) # Use DevelopmentConfig or ProductionConfig as needed
cache = Cache(app, config={"CACHE_TYPE": "SimpleCache"})
@app.route('/')
@app.route("/favicon.ico")
def favicon():
return send_from_directory(
os.path.join(app.root_path, "static"),
"favicon.ico",
mimetype="image/vnd.microsoft.icon",
)
@app.route("/")
def index(): def index():
# If the user is logged in, redirect to a protected page like /accounts # If the user is logged in, redirect to a protected page like /accounts
if session.get('logged_in'): if session.get("logged_in"):
return redirect(url_for('home')) return redirect(url_for("home"))
return render_template('index.html') return render_template("index.html")
@app.route('/home')
@app.route("/home")
@cache.cached(timeout=60) # cache for 120 seconds @cache.cached(timeout=60) # cache for 120 seconds
def home(): 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"])
current_month_accounts = filter_accounts_current_month(all_accounts) current_month_accounts = filter_accounts_current_month(all_accounts)
return render_template('home.html', username=session['username'], accounts=get_user_accounts(base_url, session['auth_credentials']), current_month_accounts=current_month_accounts) return render_template(
"home.html",
username=session["username"],
accounts=get_user_accounts(base_url, session["auth_credentials"]),
current_month_accounts=current_month_accounts,
)
@app.route('/login', methods=['POST'])
@app.route("/login", methods=["POST"])
def login(): def login():
username = request.form['username'] username = request.form["username"]
password = request.form['password'] password = request.form["password"]
# Encode the username and password in Base64 # Encode the username and password in Base64
credentials = f"{username}:{password}" credentials = f"{username}:{password}"
encoded_credentials = base64.b64encode(credentials.encode()).decode() encoded_credentials = base64.b64encode(credentials.encode()).decode()
base_url = app.config['BASE_URL'] # Access base_url from the config base_url = app.config["BASE_URL"] # Access base_url from the config
login_url = f"{base_url}/Login" # Construct the full URL login_url = f"{base_url}/Login" # Construct the full URL
# Send GET request to the external login API with Basic Auth # Send GET request to the external login API with Basic Auth
response = requests.get( response = requests.get(
login_url, login_url, auth=requests.auth.HTTPBasicAuth(username, password)
auth=requests.auth.HTTPBasicAuth(username, password)
) )
# Check if login was successful # Check if login was successful
if response.status_code == 200 and response.json().get("auth") == "Success": if response.status_code == 200 and response.json().get("auth") == "Success":
# Set session variable to indicate the user is logged in # Set session variable to indicate the user is logged in
session['logged_in'] = True session["logged_in"] = True
session['username'] = username session["username"] = username
session['auth_credentials'] = encoded_credentials session["auth_credentials"] = encoded_credentials
return redirect(url_for('home')) # Redirect to the Accounts page return redirect(url_for("home")) # Redirect to the Accounts page
else: else:
# Show error on the login page # Show error on the login page
error = "Invalid username or password. Please try again." error = "Invalid username or password. Please try again."
return render_template('index.html', error=error) return render_template("index.html", error=error)
@app.route('/urls', methods=['GET'])
@app.route("/urls", methods=["GET"])
@cache.cached(timeout=300) # cache for 5 minutes @cache.cached(timeout=300) # cache for 5 minutes
def urls(): def urls():
# Check if the user is logged in # Check if the user is logged in
if not session.get('logged_in'): if not session.get("logged_in"):
return redirect(url_for('home')) return redirect(url_for("home"))
# Placeholder content for Accounts page # Placeholder content for Accounts page
base_url = app.config['BASE_URL'] # Access base_url from the config base_url = app.config["BASE_URL"] # Access base_url from the config
return render_template('urls.html', urls=get_urls(base_url, session['auth_credentials'])) return render_template(
"urls.html", urls=get_urls(base_url, session["auth_credentials"])
)
@app.route('/accounts', methods=['GET'])
@app.route("/accounts", methods=["GET"])
@cache.cached(timeout=120) # cache for 120 seconds @cache.cached(timeout=120) # cache for 120 seconds
def user_accounts(): def user_accounts():
# Check if the user is logged in # Check if the user is logged in
if not session.get('logged_in'): if not session.get("logged_in"):
return redirect(url_for('home')) return redirect(url_for("home"))
# Placeholder content for Accounts page # Placeholder content for Accounts page
base_url = app.config['BASE_URL'] # Access base_url from the config base_url = app.config["BASE_URL"] # Access base_url from the config
return render_template('user_accounts.html', username=session['username'], user_accounts=get_user_accounts(base_url, session['auth_credentials']), auth=session['auth_credentials']) return render_template(
"user_accounts.html",
username=session["username"],
user_accounts=get_user_accounts(base_url, session["auth_credentials"]),
auth=session["auth_credentials"],
)
@app.route('/accounts/add', methods=['GET', 'POST']) @app.route("/accounts/add", methods=["GET", "POST"])
def add_account(): def add_account():
base_url = app.config['BASE_URL'] # Access base_url from the config base_url = app.config["BASE_URL"] # Access base_url from the config
if request.method == 'POST': if request.method == "POST":
username = request.form['username'] username = request.form["username"]
password = request.form['password'] password = request.form["password"]
stream = request.form['stream'] stream = request.form["stream"]
if add_user_account(base_url, session['auth_credentials'], username, password, stream): if add_user_account(
base_url, session["auth_credentials"], username, password, stream
):
cache.clear() # Clears all cache entries cache.clear() # Clears all cache entries
return redirect(url_for('user_accounts')) return redirect(url_for("user_accounts"))
return render_template('add_account.html') return render_template("add_account.html")
return render_template('add_account.html') return render_template("add_account.html")
@app.route('/accounts/delete', methods=['POST'])
@app.route("/accounts/delete", methods=["POST"])
def delete_account(): def delete_account():
stream = request.form.get('stream') stream = request.form.get("stream")
username = request.form.get('username') username = request.form.get("username")
base_url = app.config['BASE_URL'] base_url = app.config["BASE_URL"]
if delete_user_account(base_url,session['auth_credentials'], stream, username): if delete_user_account(base_url, session["auth_credentials"], stream, username):
cache.clear() # Clears all cache entries cache.clear() # Clears all cache entries
return redirect(url_for('user_accounts')) return redirect(url_for("user_accounts"))
return redirect(url_for('user_accounts')) return redirect(url_for("user_accounts"))
if __name__ == '__main__': if __name__ == "__main__":
app.run(debug=app.config['DEBUG'], host=app.config['HOST'], port=app.config['PORT']) app.run(debug=app.config["DEBUG"], host=app.config["HOST"], port=app.config["PORT"])

View File

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB