Instacom / app.py
SuriRaja's picture
Update app.py
dcd23a1 verified
import streamlit as st
import pandas as pd
file_path = 'data_with_admin_v2.xlsx'
# Function to load a sheet, returning an empty DataFrame if the sheet does not exist
def load_sheet(file_path, sheet_name):
try:
return pd.read_excel(file_path, sheet_name=sheet_name)
except ValueError:
st.warning(f"Worksheet named '{sheet_name}' not found")
return pd.DataFrame()
users_df = load_sheet(file_path, 'Users')
truck_owners_df = load_sheet(file_path, 'Truck Owners')
transporters_df = load_sheet(file_path, 'Transporters')
customer_service_df = load_sheet(file_path, 'CustomerService')
admin_df = load_sheet(file_path, 'Admin')
def authenticate(username, password):
user = users_df[(users_df['Username'] == username) & (users_df['Password'] == password)]
if not user.empty:
return user.iloc[0]['Role']
return None
def main_ui():
st.title("Instacomm App Login")
username = st.text_input("Username", key="main_login_username")
password = st.text_input("Password", type="password", key="main_login_password")
login_button = st.button("Login", key="main_login_button")
if login_button:
role = authenticate(username, password)
if role:
st.session_state.role = role
st.session_state.logged_in = True # Set a session state key to force rerun
else:
st.error("Invalid credentials")
def truck_owner_ui():
global truck_owners_df
st.title("Truck Owner Functions")
with st.form(key='add_truck_owner_form'):
name = st.text_input("Name", key="to_name")
vehicle_id = st.text_input("Vehicle ID", key="to_vehicle_id")
vehicle_type = st.text_input("Vehicle Type", key="to_vehicle_type")
route = st.text_input("Route", key="to_route")
load_availability = st.text_input("Load Availability", key="to_load_availability")
source = st.text_input("Source", key="to_source")
destination = st.text_input("Destination", key="to_destination")
submit_button = st.form_submit_button(label='Add Truck Owner', key="to_submit_button")
if submit_button:
new_id = truck_owners_df['Truck Owner ID'].max() + 1
new_row = pd.DataFrame({
'Truck Owner ID': [new_id],
'Name': [name],
'Vehicle ID': [vehicle_id],
'Vehicle Type': [vehicle_type],
'Subscription Status': ['Pending'],
'KYC Status': ['Pending'],
'Route': [route],
'Load Availability': [load_availability],
'Source': [source],
'Destination': [destination],
'Transit Status': ['Pending'],
'GPS Tracking': ['Disabled']
})
truck_owners_df = pd.concat([truck_owners_df, new_row], ignore_index=True)
truck_owners_df.to_excel(file_path, sheet_name='Truck Owners', index=False)
st.success("Truck owner added successfully!")
if st.button("View Truck Owners Data", key="to_view_truck_owners"):
st.dataframe(truck_owners_df)
st.subheader("Truck Owner Verification Status")
st.dataframe(truck_owners_df[['Truck Owner ID', 'Name', 'KYC Status', 'Transit Status', 'Load Availability', 'Source', 'Destination']])
def transporter_ui():
global transporters_df
st.title("Transporter Functions")
with st.form(key='add_transporter_form'):
name = st.text_input("Name", key="transporter_name")
company = st.text_input("Company", key="transporter_company")
load_requirements = st.text_input("Load Requirements", key="transporter_load_requirements")
source = st.text_input("Source", key="transporter_source")
destination = st.text_input("Destination", key="transporter_destination")
submit_button = st.form_submit_button(label='Add Transporter', key="transporter_submit_button")
if submit_button:
new_id = transporters_df['Transporter ID'].max() + 1
new_row = pd.DataFrame({
'Transporter ID': [new_id],
'Name': [name],
'Company': [company],
'Load Requirements': [load_requirements],
'Source': [source],
'Destination': [destination],
'KYC Status': ['Pending']
})
transporters_df = pd.concat([transporters_df, new_row], ignore_index=True)
transporters_df.to_excel(file_path, sheet_name='Transporters', index=False)
st.success("Transporter added successfully!")
if st.button("View Transporters Data", key="transporter_view_transporters"):
st.dataframe(transporters_df)
st.subheader("Transporter Verification Status")
st.dataframe(transporters_df[['Transporter ID', 'Name', 'Company', 'KYC Status', 'Load Requirements', 'Source', 'Destination']])
def customer_service_ui():
global truck_owners_df, transporters_df
st.title("Customer Service Functions")
if st.button("View Truck Owners Data", key="cs_view_truck_owners"):
st.dataframe(truck_owners_df)
if st.button("View Transporters Data", key="cs_view_transporters"):
st.dataframe(transporters_df)
st.subheader("Manage KYC and Operations")
if st.button("Verify Truck Owner KYC", key="cs_verify_truck_owner_kyc"):
truck_owners_df['KYC Status'] = 'Verified'
truck_owners_df.to_excel(file_path, sheet_name='Truck Owners', index=False)
st.success("Truck Owner KYC Verified")
if st.button("Verify Transporter KYC", key="cs_verify_transporter_kyc"):
transporters_df['KYC Status'] = 'Verified'
transporters_df.to_excel(file_path, sheet_name='Transporters', index=False)
st.success("Transporter KYC Verified")
def admin_ui():
global customer_service_df
st.title("Admin Functions")
st.subheader("View and Manage All Data")
if st.button("View All Truck Owners Data", key="admin_view_all_truck_owners"):
st.dataframe(truck_owners_df)
if st.button("View All Transporters Data", key="admin_view_all_transporters"):
st.dataframe(transporters_df)
if st.button("View All Customer Service Data", key="admin_view_all_customer_service"):
st.dataframe(customer_service_df)
st.subheader("Onboarding and KYC Management")
new_service = st.text_input("Customer Service Name", key="admin_new_cs_name")
add_cs_button = st.button("Add Customer Service", key="admin_add_new_cs")
if add_cs_button and new_service:
new_id = customer_service_df['ID'].max() + 1
new_row = pd.DataFrame({
'ID': [new_id],
'Name': [new_service],
'KYC Status': ['Pending']
})
customer_service_df = pd.concat([customer_service_df, new_row], ignore_index=True)
customer_service_df.to_excel(file_path, sheet_name='CustomerService', index=False)
st.success("Customer Service Onboarded Successfully")
if 'logged_in' not in st.session_state:
st.session_state.logged_in = False
if 'role' not in st.session_state:
main_ui()
else:
role = st.session_state.role
if role == "Truck Owner":
truck_owner_ui()
elif role == "Transporter":
transporter_ui()
elif role == "Customer Service":
customer_service_ui()
elif role == "Admin":
admin_ui()
if __name__ == "__main__":
main_ui()