Prospect-ui / app.py
Narayana02's picture
Update app.py
b178678 verified
import streamlit as st
import psycopg2
import os
from dotenv import load_dotenv
from datetime import datetime
# Load environment variables from .env file
load_dotenv()
# Connect to PostgreSQL database
def connect_db():
try:
return psycopg2.connect(
host=os.getenv("DB_HOST"),
port=os.getenv("DB_PORT", 5432),
database=os.getenv("DB_NAME"),
user=os.getenv("DB_USER"),
password=os.getenv("DB_PASSWORD")
)
except psycopg2.OperationalError as e:
st.error(f"Error connecting to the database: {e}")
return None
# Insert user data into the "users" table
def insert_user(company_name, requirements, date, status, notes, next_steps, contact_person, contact_information):
conn = connect_db()
cur = conn.cursor()
query = """
INSERT INTO users
(company_name, requirements, date, status, notes, next_steps, contact_person, contact_information)
VALUES (%s, %s, %s, %s, %s, %s, %s, %s)
"""
cur.execute(query, (company_name, requirements, date, status, notes, next_steps, contact_person, contact_information))
conn.commit()
cur.close()
conn.close()
st.success("User added successfully!")
# Search users based on query
def search_users(query):
conn = connect_db()
cur = conn.cursor()
search_query = """
SELECT company_name
FROM users
WHERE company_name ILIKE %s
"""
cur.execute(search_query, (f"%{query}%",))
results = cur.fetchall()
cur.close()
conn.close()
return results
# Get detailed information of a specific company
def get_company_details(company_name):
conn = connect_db()
cur = conn.cursor()
details_query = """
SELECT company_name, requirements, date, status, notes, next_steps, contact_person, contact_information
FROM users
WHERE company_name = %s
"""
cur.execute(details_query, (company_name,))
details = cur.fetchone()
cur.close()
conn.close()
return details
# Streamlit UI
st.title("User Management")
# Search bar
search_query = st.text_input("Search", placeholder="Enter company name...", max_chars=100)
if search_query:
companies = search_users(search_query)
if companies:
st.write("**Company Suggestions:**")
company_names = [row[0] for row in companies]
selected_company = st.selectbox("Select a company:", company_names)
if selected_company:
details = get_company_details(selected_company)
if details:
st.subheader("Company Details")
st.write(f"**Company Name:** {details[0]}")
st.write(f"**Requirements:** {details[1]}")
st.write(f"**Date:** {details[2]}")
st.write(f"**Status:** {details[3]}")
st.write(f"**Notes:** {details[4]}")
st.write(f"**Next Steps:** {details[5]}")
st.write(f"**Contact Person:** {details[6]}")
st.write(f"**Contact Information:** {details[7]}")
else:
st.write("No details found.")
else:
st.write("No company names found.")
# Form for adding a new user
st.header("Add a New User")
with st.form("user_form"):
company_name = st.text_input("Company Name", max_chars=255)
requirements = st.text_area("Requirements", height=100)
date = st.date_input("Date", value=datetime.today())
status = st.text_input("Status", max_chars=50)
notes = st.text_area("Notes", height=100)
next_steps = st.text_area("Next Steps", height=100)
contact_person = st.text_input("Contact Person", max_chars=100)
contact_information = st.text_input("Contact Information (Email/Phone)", max_chars=255)
# Form submission button
submitted = st.form_submit_button("Add User")
if submitted:
if company_name and contact_person and contact_information:
insert_user(
company_name, requirements, date, status, notes, next_steps, contact_person, contact_information
)
else:
st.error("Please fill in all required fields (Company Name, Contact Person, Contact Information).")