text-morph-shareen / src /streamlit_app.py
shareen1's picture
Update src/streamlit_app.py
e0ac191 verified
import streamlit as st
from transformers import pipeline
from backend import db_connection # Import db_connection
import os
os.environ['TRANSFORMERS_CACHE'] = './hf_cache'
# -----------------------------
# Summarizer model
# -----------------------------
@st.cache_resource
def load_summarizer():
return pipeline("summarization", model="sshleifer/distilbart-cnn-12-6")
summarizer = load_summarizer()
# -----------------------------
# Functions
# -----------------------------
def signup():
st.title("πŸ“ Signup Page")
# name = st.text_input("Enter your Name") # Removed name input
email = st.text_input("Enter your Email")
username = st.text_input("Choose a Username")
password = st.text_input("Choose a Password", type="password")
if st.button("Signup"):
if email and username and password: # Removed 'name'
# Use db_connection to create user
if db_connection.create_user(email, username, password): # Removed 'name' argument
st.success("βœ… Account created! Please log in now.")
st.session_state.page = "login"
st.rerun()
else:
st.error("⚠️ An account with this username or email already exists. Please choose another.")
else:
st.error("⚠️ Please fill in all fields.")
def login():
st.title("πŸ”’ Login Page")
username = st.text_input("Username")
password = st.text_input("Password", type="password")
if st.button("Login"):
# Use db_connection to validate user
user = db_connection.validate_user(username, password)
if user:
st.session_state.logged_in = True
st.session_state.username = user['username'] # Store username in session
st.session_state.user_role = user['role'] # Store user role in session
st.success("βœ… Login successful! Redirecting...")
st.session_state.page = "dashboard"
st.rerun()
else:
st.error("❌ Invalid username or password")
if st.button("Go to Signup"):
st.session_state.page = "signup"
st.rerun()
def summarizer_page():
st.title("πŸ“„ Text Summarizer")
text = st.text_area("Enter the text you want to summarize:", height=200)
if st.button("Summarize"):
if text.strip():
summary = summarizer(text, max_length=130, min_length=30, do_sample=False)
st.subheader("✨ Summary:")
st.write(summary[0]['summary_text'])
else:
st.error("⚠️ Please enter some text to summarize.")
if st.button("Logout"):
st.session_state.logged_in = False
st.session_state.page = "login" # Ensure it redirects to login after logout
st.rerun()
# -----------------------------
# Main App
# -----------------------------
def main():
if "logged_in" not in st.session_state:
st.session_state.logged_in = False
if "page" not in st.session_state:
st.session_state.page = "login"
if st.session_state.page == "signup":
signup()
elif st.session_state.page == "login":
login()
elif st.session_state.page == "dashboard" and st.session_state.logged_in: # New dashboard page
st.title("Welcome to Dashboard!") # Placeholder for dashboard content
# In a real app, you'd import and call a dashboard function here
if st.button("Go to Summarizer"): # Example navigation to summarizer
st.session_state.page = "summarizer"
st.rerun()
if st.button("Logout"): # Logout from dashboard
st.session_state.logged_in = False
st.session_state.page = "login"
st.rerun()
elif st.session_state.page == "summarizer" and st.session_state.logged_in:
summarizer_page()
else:
st.session_state.page = "login"
login()
if __name__ == "__main__":
main()