Spaces:
Sleeping
Sleeping
import streamlit as st | |
from datetime import datetime, timedelta | |
import random | |
import logging | |
# Sample data structure for user_tasks | |
if 'user_tasks' not in st.session_state: | |
st.session_state.user_tasks = {} | |
# Initialize user preferences (this can also be loaded from a database or file if needed) | |
if 'user_preferences' not in st.session_state: | |
st.session_state.user_preferences = {"name": None, "email": None} | |
st.session_state.logged_in = False | |
# Initialize the logger | |
logging.basicConfig(filename='app.log', level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') | |
# Helper functions | |
def generate_numeric_id(): | |
return int(datetime.now().timestamp() * 1000) | |
# Login form | |
def login(): | |
st.title("Login") | |
username = st.text_input("Enter your name") | |
email = st.text_input("Enter your email") | |
if st.button("Login"): | |
if username and email: | |
# Set session state for logged-in user | |
st.session_state.user_preferences['name'] = username | |
st.session_state.user_preferences['email'] = email | |
st.session_state.logged_in = True | |
logging.info(f"User logged in: {username}") | |
else: | |
st.warning("Please enter both name and email.") | |
# Logout function | |
def logout(): | |
st.session_state.logged_in = False | |
st.session_state.user_preferences['name'] = None | |
st.session_state.user_preferences['email'] = None | |
st.success("Logged out successfully.") | |
# Display tasks based on the selected section | |
def display_tasks(tasks): | |
for task in tasks: | |
st.write(f"Task: {task['text']} - Due Date: {task['date']} - Completed: {task['completed']}") | |
# Main App Logic | |
if st.session_state.logged_in: | |
st.sidebar.title(f"Welcome, {st.session_state.user_preferences['name']}!") | |
if st.sidebar.button("Logout"): | |
logout() # Clear session to log out | |
# Task Input Form | |
st.subheader("Add a New Task") | |
with st.form("add_task_form"): | |
task_text = st.text_input("Task Description") | |
due_date = st.date_input("Due Date") | |
if st.form_submit_button("Add Task"): | |
task_id = generate_numeric_id() | |
st.session_state.user_tasks[task_id] = { | |
"id": task_id, | |
"text": task_text, | |
"date": due_date.strftime('%Y-%m-%d'), | |
"completed": False | |
} | |
st.success("Task added successfully.") | |
# Display Tasks | |
st.subheader("Your Tasks") | |
display_tasks(st.session_state.user_tasks.values()) | |
# Clear All Tasks | |
if st.button("Delete All Tasks"): | |
st.session_state.user_tasks.clear() | |
st.success("All tasks deleted.") | |
else: | |
# Render login form if the user is not logged in | |
login() | |