| import streamlit as st |
| import pymongo |
|
|
| |
| client = pymongo.MongoClient("mongodb://localhost:27017/") |
| db = client["todo_db"] |
| collection = db["tasks"] |
|
|
| |
| def create_task(task, category, priority): |
| |
| task_dict = {"task": task, "category": category, "priority": priority} |
| |
| collection.insert_one(task_dict) |
| |
| st.success("Task created successfully!") |
|
|
| |
| def edit_task(id, task, category, priority): |
| |
| new_values = {"$set": {"task": task, "category": category, "priority": priority}} |
| |
| collection.update_one({"_id": id}, new_values) |
| |
| st.success("Task edited successfully!") |
|
|
| |
| def delete_task(id): |
| |
| collection.delete_one({"_id": id}) |
| |
| st.success("Task deleted successfully!") |
|
|
| |
| def validate_input(task, category, priority): |
| |
| if task == "" or category == "" or priority == "": |
| |
| st.warning("Please fill in all the fields before creating or editing a task.") |
| |
| return False |
| else: |
| |
| return True |
|
|
| |
| st.sidebar.title("To-do List App") |
| navigation = st.sidebar.radio("Navigation", ["Home", "Create", "Edit", "Delete"]) |
|
|
| |
| if navigation == "Home": |
| |
| st.title("To-do List App") |
| st.subheader("View your tasks") |
| |
| tasks = collection.find().sort("priority", -1) |
| |
| st.table(tasks) |
| elif navigation == "Create": |
| |
| st.title("To-do List App") |
| st.subheader("Create a new task") |
| |
| task = st.text_input("Task") |
| category = st.text_input("Category") |
| priority = st.number_input("Priority (1-5)", min_value=1, max_value=5) |
| |
| if st.button("Create"): |
| |
| if validate_input(task, category, priority): |
| |
| create_task(task, category, priority) |
| elif navigation == "Edit": |
| |
| st.title("To-do List App") |
| st.subheader("Edit an existing task") |
| |
| tasks = collection.find() |
| task_list = [(task["_id"], task["task"]) for task in tasks] |
| task_id, task_name = st.selectbox("Select a task to edit", task_list) |
| |
| new_task = st.text_input("Task", value=task_name) |
| new_category = st.text_input("Category") |
| new_priority = st.number_input("Priority (1-5)", min_value=1, max_value=5) |
| |
| if st.button("Edit"): |
| |
| if validate_input(new_task, new_category, new_priority): |
| |
| edit_task(task_id, new_task, new_category, new_priority) |
| elif navigation == "Delete": |
| |
| st.title("To-do List App") |
| st.subheader("Delete a task") |
| |
| tasks = collection.find() |
| task_list = [(task["_id"], task["task"]) for task in tasks] |
| task_id, task_name = st.selectbox("Select a task to delete", task_list) |
| |
| if st.button("Delete"): |
| |
| delete_task(task_id) |
|
|