diff --git a/app.py b/app.py index dc02270..2c6d65a 100644 --- a/app.py +++ b/app.py @@ -3,7 +3,7 @@ from flask import Flask, render_template, request, redirect, url_for, session, f from flask_caching import Cache import requests.auth from lib.datetime import filter_accounts_current_month -from lib.reqs import (get_urls, get_user_accounts) +from lib.reqs import (get_urls, get_user_accounts, add_user_account, delete_user_account) import requests import base64 from flask import Flask @@ -78,5 +78,33 @@ def user_accounts(): 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']) + +@app.route('/accounts/add', methods=['GET', 'POST']) +def add_account(): + base_url = app.config['BASE_URL'] # Access base_url from the config + if request.method == 'POST': + username = request.form['username'] + password = request.form['password'] + stream = request.form['stream'] + + if add_user_account(base_url, session['auth_credentials'], username, password, stream): + cache.clear() # Clears all cache entries + return redirect(url_for('user_accounts')) + return render_template('add_account.html') + + return render_template('add_account.html') + +@app.route('/accounts/delete', methods=['POST']) +def delete_account(): + stream = request.form.get('stream') + username = request.form.get('username') + base_url = app.config['BASE_URL'] + + if delete_user_account(base_url,session['auth_credentials'], stream, username): + cache.clear() # Clears all cache entries + return redirect(url_for('user_accounts')) + return redirect(url_for('user_accounts')) + + if __name__ == '__main__': app.run(debug=app.config['DEBUG'], host=app.config['HOST'], port=app.config['PORT']) diff --git a/lib/reqs.py b/lib/reqs.py index 04e18a1..14943d1 100644 --- a/lib/reqs.py +++ b/lib/reqs.py @@ -40,12 +40,40 @@ def delete_user_account(base_url: str, auth: str, stream:str, username:str) -> b Returns: bool: _description_ """ - url = f"{base_url}/getUserAccounts" + url = f"{base_url}/deleteAccount" payload = {"stream": stream, "user": username} headers = {"Authorization": f"Basic {auth}"} response = requests.request("POST", url, headers=headers, data=payload) - res_json = json.loads(response.text) - return res_json + if "Deleted" in response.text: + return True + else: + return False + + + +def add_user_account(base_url: str, auth: str, username:str, password:str, stream:str,) -> bool: + """_summary_ + + Args: + base_url (str): _description_ + auth (str): _description_ + stream (str): _description_ + username (str): _description_ + + Returns: + bool: _description_ + """ + url = f"{base_url}/addAccount" + + payload = {"username": username, "password": password, "stream": stream} + + headers = {"Authorization": f"Basic {auth}"} + + response = requests.request("POST", url, headers=headers, data=payload) + if "Added successfully" in response.text: + return True + else: + return False \ No newline at end of file diff --git a/templates/add_account.html b/templates/add_account.html new file mode 100644 index 0000000..cf2f6d8 --- /dev/null +++ b/templates/add_account.html @@ -0,0 +1,95 @@ + + + +
+ + +