Spaces:
Sleeping
Sleeping
import gradio as gr | |
import subprocess | |
import pandas as pd | |
import os | |
def create_account(number, name, balance): | |
input_str = f"{number},{name},{balance}" | |
result = subprocess.run(["./cobol/account", "CREATE", input_str], capture_output=True, text=True) | |
return "β Account created" | |
def create_loan(lid, acc_id, amount, rate, status): | |
input_str = f"{lid},{acc_id},{amount},{rate},{status}" | |
result = subprocess.run(["./cobol/loan", "CREATE", input_str], capture_output=True, text=True) | |
return "β Loan created" | |
def export_accounts(): | |
df = pd.read_csv("data/accounts.csv") | |
path = "export_accounts.csv" | |
df.to_csv(path, index=False) | |
return path | |
def export_loans(): | |
df = pd.read_csv("data/loans.csv") | |
path = "export_loans.csv" | |
df.to_csv(path, index=False) | |
return path | |
def get_log(): | |
try: | |
with open("data/transactions.log", "r") as f: | |
content = f.read() | |
html_content = content.replace('\n', '<br>') | |
return f""" | |
<div class="transaction-log"> | |
{html_content} | |
</div> | |
""" | |
except Exception as e: | |
return f"<div class='transaction-log'>Error reading log: {str(e)}</div>" | |
with gr.Blocks(title="COBOL Bank Demo", css="file=static/style.css") as demo: | |
gr.Markdown("# π° COBOL Banking System\nCreate, read, and export accounts and loans") | |
with gr.Tab("Accounts"): | |
with gr.Row(): | |
acc_num = gr.Number(label="Account Number") | |
acc_name = gr.Textbox(label="Name") | |
acc_bal = gr.Number(label="Balance") | |
acc_btn = gr.Button("Create Account") | |
acc_btn.click(fn=create_account, inputs=[acc_num, acc_name, acc_bal], outputs=[]) | |
exp_acc_btn = gr.Button("Export Accounts") | |
exp_acc_file = gr.File(label="Download Accounts CSV") | |
exp_acc_btn.click(fn=export_accounts, outputs=exp_acc_file) | |
with gr.Tab("Loans"): | |
with gr.Row(): | |
loan_id = gr.Textbox(label="Loan ID") | |
loan_acc = gr.Number(label="Account Number") | |
loan_amt = gr.Number(label="Amount") | |
loan_rate = gr.Number(label="Rate (%)") | |
loan_status = gr.Textbox(label="Status") | |
loan_btn = gr.Button("Create Loan") | |
loan_btn.click(fn=create_loan, inputs=[loan_id, loan_acc, loan_amt, loan_rate, loan_status], outputs=[]) | |
exp_loan_btn = gr.Button("Export Loans") | |
exp_loan_file = gr.File(label="Download Loans CSV") | |
exp_loan_btn.click(fn=export_loans, outputs=exp_loan_file) | |
with gr.Tab("Transaction Log"): | |
log_box = gr.HTML(label="Logs", value=get_log()) | |
refresh_btn = gr.Button("Refresh Log") | |
refresh_btn.click(fn=get_log, outputs=log_box) | |
demo.launch() |