Continue working on CLI Implementation
This commit is contained in:
76
cli/cli.py
76
cli/cli.py
@@ -1,14 +1,26 @@
|
||||
# Lucas Mathews - Fontys Student ID: 5023572
|
||||
# Banking System CLI Utility
|
||||
|
||||
import json
|
||||
import argparse
|
||||
import sys
|
||||
from connection import login, logout
|
||||
from config import CONFIG
|
||||
from getpass import getpass
|
||||
from connection import login, logout, get_client
|
||||
from test_database_generator import generate_test_database
|
||||
|
||||
|
||||
def show_menu():
|
||||
print("\nAvailable options:")
|
||||
print("1. Logout")
|
||||
print("2. New user")
|
||||
print("3. Add test users")
|
||||
print("4. Exit")
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(description='Banking System CLI Utility')
|
||||
parser.add_argument('-u', '--username', type=str, help='Username for login')
|
||||
parser.add_argument('-p', '--password', type=str, help='Password for login')
|
||||
parser.add_argument('-u', '--username', type=str, default=CONFIG["client"]["default_id"], help='Username for login')
|
||||
parser.add_argument('-p', '--password', type=str, default=CONFIG["client"]["default_password"], help='Password for login')
|
||||
|
||||
subparsers = parser.add_subparsers(dest='command')
|
||||
|
||||
@@ -17,7 +29,59 @@ def main():
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
if args.command == 'login':
|
||||
if not args.command:
|
||||
while True:
|
||||
if not args.username:
|
||||
args.username = input("Enter username: ")
|
||||
if not args.password:
|
||||
args.password = getpass("Enter password: ")
|
||||
|
||||
response = login(args.username, args.password)
|
||||
print(response)
|
||||
if response['success']:
|
||||
print(f"Login successful: {response['message']}")
|
||||
try:
|
||||
with open('session_data.json', 'r') as f:
|
||||
session_data = json.load(f)
|
||||
client_id = session_data['client_id']
|
||||
client_info = get_client(client_id)
|
||||
if client_info.get('success'):
|
||||
client = client_info['data']
|
||||
name = client['name']
|
||||
print(f"Welcome, {name}!")
|
||||
except Exception as e:
|
||||
print(f"Error loading client data: {str(e)}")
|
||||
|
||||
while True:
|
||||
show_menu()
|
||||
option = input("Choose an option: ")
|
||||
if option == "1":
|
||||
response = logout()
|
||||
json_response = response.json()
|
||||
if json_response['success']:
|
||||
print(f"Logout successful: {json_response['message']}")
|
||||
else:
|
||||
print(f"Logout failed: {json_response['message']}")
|
||||
args.username = None
|
||||
args.password = None
|
||||
elif option == "2":
|
||||
print("New user option selected.")
|
||||
# Implement new user functionality here
|
||||
elif option == "3":
|
||||
print("Add test users option selected.")
|
||||
generate_test_database(args.username, args.password)
|
||||
|
||||
elif option == "4":
|
||||
print("Exiting...")
|
||||
break
|
||||
else:
|
||||
print("Invalid option. Please try again.")
|
||||
break
|
||||
else:
|
||||
print(f"Login failed: {response['message']}. Please try again.")
|
||||
args.username = None
|
||||
args.password = None
|
||||
elif args.command == 'login':
|
||||
if not args.username or not args.password:
|
||||
print("Username and password are required for login.")
|
||||
sys.exit(1)
|
||||
@@ -25,13 +89,13 @@ def main():
|
||||
if response['success']:
|
||||
print(f"Login successful: {response['message']}")
|
||||
else:
|
||||
print(f"Login failed: {response['message']}")
|
||||
print(f"Login failed: {response['message']}. Please try again.")
|
||||
elif args.command == 'logout':
|
||||
response = logout()
|
||||
if response['success']:
|
||||
print(f"Logout successful: {response['message']}")
|
||||
else:
|
||||
print(f"Check Credentials: {response['message']}")
|
||||
print(f"Logout failed: {response['message']}")
|
||||
else:
|
||||
print("Invalid command. Use 'login' or 'logout'.")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user