Spaces:
Runtime error
Runtime error
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,)) |