streamlit-test / pages /upload.py
IsaacKerson
fix st.warning error
12a18ff unverified
raw
history blame
No virus
2.82 kB
import streamlit as st
import os.path
import pandas as pd
import csv
from pages.utils import *
def app():
'''delete form_submit to run quiz maker on return to page'''
if "form_submit" in st.session_state.keys():
del st.session_state.form_submit
def upload_callback(num_items):
st.session_state.form_upload = True
DATABASE_NAME = 'quiz_maker.db'
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
DATABASE = os.path.join(BASE_DIR, DATABASE_NAME)
insert_tups = []
for idx in range(1, num_items + 1):
insert_tups.append((st.session_state[f'word_{str(idx)}'], st.session_state[f'def_{str(idx)}'], \
st.session_state[f'ex_{str(idx)}'], st.session_state[f'tag_{str(idx)}']))
c, conn = db_connect(DATABASE)
c.executemany("INSERT INTO vocab VALUES (?, ?, ?, ?)", insert_tups)
conn.commit()
conn.close()
if "form_upload" not in st.session_state:
st.markdown("## Upload Data")
# Code to read a single file
uploaded_file = st.file_uploader("Choose a file", type = ['csv', 'xlsx'])
if uploaded_file is not None:
try:
data = pd.read_csv(uploaded_file)
data.to_csv('data.csv', index=False)
except Exception as e:
print(e)
data = pd.read_excel(uploaded_file)
data.to_csv('data.csv', index=False)
if st.button("Load Data"):
if not os.path.exists("data.csv"):
st.warning("Upload a file to load data.")
else:
st.markdown("### Confirm the data is correct.")
num_items = 0
form = st.form("data_check_form")
with open("data.csv", "r") as f:
reader = csv.reader(f, delimiter=",")
for i, line in enumerate(reader):
if i == 0:
pass
else:
num_items += 1
form.markdown(f"### {i}")
form.text_input("Word or Phrase", f"{line[0]}", key=f"word_{i}")
form.text_input("Definition", f"{line[1]}", key=f"def_{i}")
form.text_input("Example", f"{line[2]}", key=f"ex_{i}")
form.text_input("Tags", f"{line[3]}", key=f"tag_{i}")
form.form_submit_button("Confirm", on_click=upload_callback, args=(num_items,))
# st.text_input(f'{q[0] + 1}. {q[3]}', key=q[0], placeholder="Type answer here")
# st.form_submit_button(label="Submit", on_click=form_callback, args=(questions,))