|
|
import streamlit as st |
|
|
|
|
|
import pymongo |
|
|
import certifi |
|
|
|
|
|
|
|
|
|
|
|
uri = "mongodb+srv://yaqiu8025:[email protected]/?retryWrites=true&w=majority" |
|
|
client = pymongo.MongoClient(uri, tlsCAFile=certifi.where()) |
|
|
db = client['todo'] |
|
|
collection = db['tasks'] |
|
|
|
|
|
|
|
|
categories = ['home', 'work', 'school'] |
|
|
priority_range = range(1, 6) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
page = st.sidebar.selectbox('Menu', ['View All', 'Create Task', 'Edit Task', 'Delete Task']) |
|
|
|
|
|
|
|
|
if page == 'View All': |
|
|
st.write('View All Tasks') |
|
|
tasks = collection.find({}, {"_id": 0}).sort("priority", pymongo.DESCENDING) |
|
|
st.table(tasks) |
|
|
|
|
|
|
|
|
elif page == 'Create Task': |
|
|
st.write('Create Task') |
|
|
input_task = st.text_input('Enter Task') |
|
|
input_category = st.selectbox('Select Category', categories) |
|
|
input_priority = st.slider('Select Priority', min_value=1, max_value=5, value=1) |
|
|
|
|
|
if st.button('Add Task'): |
|
|
if not input_task or not input_category: |
|
|
st.warning('Warning: Please fill in all fields!') |
|
|
else: |
|
|
collection.insert_one({'task': input_task, 'category': input_category, 'priority': input_priority}) |
|
|
st.success('Successfully Added') |
|
|
|
|
|
|
|
|
elif page == 'Edit Task': |
|
|
st.write('Edit Task') |
|
|
tasks = [task['task'] for task in collection.find({}, {"_id": 0})] |
|
|
task_to_edit = st.selectbox('Select Task to Edit', tasks) |
|
|
task_data = collection.find_one({'task': task_to_edit}) |
|
|
if task_data: |
|
|
st.write('Task:', task_data['task']) |
|
|
st.write('Category:', task_data['category']) |
|
|
st.write('Priority:', task_data['priority']) |
|
|
|
|
|
if st.button('Edit Task'): |
|
|
update_result = collection.update_one({'task': task_to_edit}, |
|
|
{'$set': {'task': task_data['task'], |
|
|
'category': task_data['category'], |
|
|
'priority': task_data['priority']}}) |
|
|
if update_result.modified_count > 0: |
|
|
st.success('Task successfully updated.') |
|
|
else: |
|
|
st.warning('Task not found.') |
|
|
else: |
|
|
st.warning('Task not found.') |
|
|
|
|
|
|
|
|
elif page == 'Delete Task': |
|
|
st.write('Delete Task') |
|
|
tasks = [task['task'] for task in collection.find({}, {"_id": 0})] |
|
|
task_to_delete = st.selectbox('Select Task to Delete', tasks) |
|
|
|
|
|
if task_to_delete: |
|
|
task_data = collection.find_one({'task': task_to_delete}) |
|
|
if task_data: |
|
|
st.write('Task:', task_data['task']) |
|
|
st.write('Category:', task_data['category']) |
|
|
st.write('Priority:', task_data['priority']) |
|
|
|
|
|
if st.button('Delete Task'): |
|
|
if not task_to_delete: |
|
|
st.warning('Please select a task to delete.') |
|
|
else: |
|
|
delete_result = collection.delete_one({'task': task_to_delete}) |
|
|
if delete_result.deleted_count > 0: |
|
|
st.success('Task successfully deleted.') |
|
|
else: |
|
|
st.warning('Task not found.') |