VIATEUR-AI commited on
Commit
80967f7
·
verified ·
1 Parent(s): 0030077

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +92 -0
app.py ADDED
@@ -0,0 +1,92 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+
3
+ # Data storage (simple in-memory dictionary, for demo)
4
+ users = {"admin":"1234"} # username: password
5
+ family_members = []
6
+ expenses = []
7
+
8
+ # ---------------- Functions ----------------
9
+ def login(username, password):
10
+ if username in users and users[username] == password:
11
+ return "Login successful!", gr.update(visible=True)
12
+ return "Login failed!", gr.update(visible=False)
13
+
14
+ def add_member(name, dob, gender, relationship, phone, email):
15
+ member_id = len(family_members) + 1
16
+ family_members.append({
17
+ "id": member_id,
18
+ "name": name,
19
+ "dob": dob,
20
+ "gender": gender,
21
+ "relationship": relationship,
22
+ "phone": phone,
23
+ "email": email
24
+ })
25
+ return f"Member {name} added!"
26
+
27
+ def view_members():
28
+ if not family_members:
29
+ return "No members yet!"
30
+ result = ""
31
+ for m in family_members:
32
+ result += f"ID:{m['id']} Name:{m['name']} Relationship:{m['relationship']} DOB:{m['dob']} Phone:{m['phone']} Email:{m['email']}\n"
33
+ return result
34
+
35
+ def add_expense(member_id, amount, category, date, description):
36
+ expenses.append({
37
+ "member_id": member_id,
38
+ "amount": amount,
39
+ "category": category,
40
+ "date": date,
41
+ "description": description
42
+ })
43
+ return f"Expense added for member ID {member_id}"
44
+
45
+ def view_expenses():
46
+ if not expenses:
47
+ return "No expenses yet!"
48
+ result = ""
49
+ for e in expenses:
50
+ result += f"Member ID:{e['member_id']} Amount:{e['amount']} Category:{e['category']} Date:{e['date']} Description:{e['description']}\n"
51
+ return result
52
+
53
+ # ---------------- Gradio Interface ----------------
54
+ with gr.Blocks() as demo:
55
+ gr.Markdown("## Family Software Online")
56
+
57
+ with gr.Row():
58
+ username = gr.Textbox(label="Username")
59
+ password = gr.Textbox(label="Password", type="password")
60
+ login_btn = gr.Button("Login")
61
+ login_status = gr.Label("")
62
+
63
+ with gr.Column(visible=False) as main_app:
64
+ gr.Markdown("### Family Members")
65
+ name = gr.Textbox(label="Name")
66
+ dob = gr.Textbox(label="DOB (YYYY-MM-DD)")
67
+ gender = gr.Textbox(label="Gender")
68
+ relationship = gr.Textbox(label="Relationship")
69
+ phone = gr.Textbox(label="Phone")
70
+ email = gr.Textbox(label="Email")
71
+ add_member_btn = gr.Button("Add Member")
72
+ view_members_btn = gr.Button("View Members")
73
+ members_output = gr.Textbox(label="Members", lines=10)
74
+
75
+ gr.Markdown("### Expenses")
76
+ member_id_input = gr.Number(label="Member ID")
77
+ amount_input = gr.Number(label="Amount")
78
+ category_input = gr.Textbox(label="Category")
79
+ date_input = gr.Textbox(label="Date (YYYY-MM-DD)")
80
+ desc_input = gr.Textbox(label="Description")
81
+ add_expense_btn = gr.Button("Add Expense")
82
+ view_expenses_btn = gr.Button("View Expenses")
83
+ expenses_output = gr.Textbox(label="Expenses", lines=10)
84
+
85
+ # Button actions
86
+ login_btn.click(login, [username, password], [login_status, main_app])
87
+ add_member_btn.click(add_member, [name, dob, gender, relationship, phone, email], members_output)
88
+ view_members_btn.click(view_members, [], members_output)
89
+ add_expense_btn.click(add_expense, [member_id_input, amount_input, category_input, date_input, desc_input], expenses_output)
90
+ view_expenses_btn.click(view_expenses, [], expenses_output)
91
+
92
+ demo.launch()