testst / app.py
geeksiddhant's picture
Update app.py
72a7751 verified
import streamlit as st
import requests
from typing import List, Optional
# API base URL
BASE_URL = "https://geeksiddhant-enrollmentapi.hf.space"
# Initialize session state for customers list
if 'customers' not in st.session_state:
st.session_state.customers = []
def fetch_customers():
"""Fetch all customers from the API"""
try:
response = requests.get(f"{BASE_URL}/customers")
if response.status_code == 200:
st.session_state.customers = response.json()
except requests.exceptions.RequestException as e:
st.error(f"Error fetching customers: {str(e)}")
def create_customer(name: str, email: str, phone: Optional[str] = None, address: Optional[str] = None):
"""Create a new customer"""
try:
# Find the next available ID
next_id = max([c['id'] for c in st.session_state.customers], default=0) + 1
customer_data = {
"id": next_id,
"name": name,
"email": email,
"phone": phone,
"address": address
}
response = requests.post(f"{BASE_URL}/customers", json=customer_data)
if response.status_code == 200:
st.success("Customer created successfully!")
fetch_customers()
else:
st.error(f"Error creating customer: {response.text}")
except requests.exceptions.RequestException as e:
st.error(f"Error creating customer: {str(e)}")
def update_customer(customer_id: int, name: str, email: str, phone: Optional[str] = None, address: Optional[str] = None):
"""Update an existing customer"""
try:
customer_data = {
"id": customer_id,
"name": name,
"email": email,
"phone": phone,
"address": address
}
response = requests.put(f"{BASE_URL}/customers/{customer_id}", json=customer_data)
if response.status_code == 200:
st.success("Customer updated successfully!")
fetch_customers()
else:
st.error(f"Error updating customer: {response.text}")
except requests.exceptions.RequestException as e:
st.error(f"Error updating customer: {str(e)}")
def delete_customer(customer_id: int):
"""Delete a customer"""
try:
response = requests.delete(f"{BASE_URL}/customers/{customer_id}")
if response.status_code == 200:
st.success("Customer deleted successfully!")
fetch_customers()
else:
st.error(f"Error deleting customer: {response.text}")
except requests.exceptions.RequestException as e:
st.error(f"Error deleting customer: {str(e)}")
# Streamlit UI
st.title("Customer Management System")
# Sidebar for navigation
page = st.sidebar.selectbox("Choose an operation", ["View Customers", "Add Customer", "Update Customer", "Delete Customer"])
# Fetch customers on initial load
fetch_customers()
if page == "View Customers":
st.header("All Customers")
if st.session_state.customers:
for customer in st.session_state.customers:
st.write(f"**ID:** {customer['id']}")
st.write(f"**Name:** {customer['name']}")
st.write(f"**Email:** {customer['email']}")
if customer.get('phone'):
st.write(f"**Phone:** {customer['phone']}")
if customer.get('address'):
st.write(f"**Address:** {customer['address']}")
st.write("---")
else:
st.info("No customers found.")
elif page == "Add Customer":
st.header("Add New Customer")
with st.form("add_customer_form"):
name = st.text_input("Name")
email = st.text_input("Email")
phone = st.text_input("Phone (optional)")
address = st.text_area("Address (optional)")
submitted = st.form_submit_button("Add Customer")
if submitted:
if name and email:
create_customer(name, email, phone, address)
else:
st.warning("Please fill in the required fields (Name and Email)")
elif page == "Update Customer":
st.header("Update Customer")
if st.session_state.customers:
customer_id = st.selectbox(
"Select Customer to Update",
options=[c['id'] for c in st.session_state.customers]
)
# Get the selected customer's data
selected_customer = next((c for c in st.session_state.customers if c['id'] == customer_id), None)
if selected_customer:
with st.form("update_customer_form"):
name = st.text_input("Name", value=selected_customer['name'])
email = st.text_input("Email", value=selected_customer['email'])
phone = st.text_input("Phone", value=selected_customer.get('phone', ''))
address = st.text_area("Address", value=selected_customer.get('address', ''))
submitted = st.form_submit_button("Update Customer")
if submitted:
if name and email:
update_customer(customer_id, name, email, phone, address)
else:
st.warning("Please fill in the required fields (Name and Email)")
else:
st.info("No customers available to update.")
elif page == "Delete Customer":
st.header("Delete Customer")
if st.session_state.customers:
customer_id = st.selectbox(
"Select Customer to Delete",
options=[c['id'] for c in st.session_state.customers]
)
if st.button("Delete Customer"):
delete_customer(customer_id)
else:
st.info("No customers available to delete.")
import uvicorn
if __name__ == "__main__":
uvicorn.run(app, host="0.0.0.0", port=7860)