Spaces:
Runtime error
Runtime error
IsaacKerson
commited on
Commit
•
815d21b
1
Parent(s):
321875a
added new quiz page
Browse files- app.py +1 -0
- pages/grid.py +1 -1
- pages/quiz_new.py +85 -0
app.py
CHANGED
@@ -14,6 +14,7 @@ app = MultiPage()
|
|
14 |
st.markdown("# Quiz Maker")
|
15 |
|
16 |
# Add all your application here
|
|
|
17 |
app.add_page("Quiz", quiz.app)
|
18 |
app.add_page("Upload", upload.app)
|
19 |
app.add_page("View", view.app)
|
|
|
14 |
st.markdown("# Quiz Maker")
|
15 |
|
16 |
# Add all your application here
|
17 |
+
app.add_page("New Quiz", quiz_new.app)
|
18 |
app.add_page("Quiz", quiz.app)
|
19 |
app.add_page("Upload", upload.app)
|
20 |
app.add_page("View", view.app)
|
pages/grid.py
CHANGED
@@ -16,4 +16,4 @@ def app():
|
|
16 |
response = AgGrid(df_template, editable=True, fit_columns_on_grid_load=True)
|
17 |
st.form_submit_button()
|
18 |
|
19 |
-
st.write(response['data'])
|
|
|
16 |
response = AgGrid(df_template, editable=True, fit_columns_on_grid_load=True)
|
17 |
st.form_submit_button()
|
18 |
|
19 |
+
st.write(response['data'])
|
pages/quiz_new.py
ADDED
@@ -0,0 +1,85 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import streamlit as st
|
2 |
+
import os.path
|
3 |
+
import sqlite3
|
4 |
+
import random
|
5 |
+
import datetime
|
6 |
+
|
7 |
+
# Custom imports
|
8 |
+
from pages.utils import add_blanks, chunker, random_session_id, check_answer, db_connect
|
9 |
+
|
10 |
+
def app():
|
11 |
+
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
|
12 |
+
DATABASE = os.path.join(BASE_DIR, 'vocabulary_current.db')
|
13 |
+
|
14 |
+
def form_callback(questions):
|
15 |
+
st.session_state.form_submit = True
|
16 |
+
num_correct = 0
|
17 |
+
session_id = random_session_id()
|
18 |
+
student_id = 'UKWN'
|
19 |
+
uct_iso = datetime.datetime.utcnow().isoformat()
|
20 |
+
st.title("Feedback")
|
21 |
+
for idx, items in enumerate(questions):
|
22 |
+
answer = st.session_state[idx]
|
23 |
+
correct_str = 'incorrect'
|
24 |
+
correct_int = 0
|
25 |
+
if check_answer(items[1], answer):
|
26 |
+
correct_str = 'correct'
|
27 |
+
correct_int = 1
|
28 |
+
num_correct += 1
|
29 |
+
st.success(f"Question {idx + 1}")
|
30 |
+
else:
|
31 |
+
st.error(f"Question {idx + 1}")
|
32 |
+
st.write(f"{items[3]}")
|
33 |
+
st.write(f"Answer: {items[1]}")
|
34 |
+
st.write(f"Your answer: {answer}")
|
35 |
+
st.write(f"You are {correct_str}.")
|
36 |
+
insert_tup = (student_id, session_id, uct_iso, items[1], items[2], answer, correct_int, )
|
37 |
+
c, conn = db_connect(DATABASE)
|
38 |
+
c.execute("INSERT INTO responses VALUES (?, ?, ?, ?, ?, ?, ?)", insert_tup)
|
39 |
+
conn.commit()
|
40 |
+
conn.close()
|
41 |
+
score_val = 100 * num_correct / len(questions)
|
42 |
+
st.metric(label="Final Score", value=f"{score_val}%")
|
43 |
+
|
44 |
+
if "form_submit" not in st.session_state:
|
45 |
+
c, conn = db_connect(DATABASE)
|
46 |
+
|
47 |
+
units_list = []
|
48 |
+
for item in c.execute("SELECT DISTINCT unit FROM vocab"):
|
49 |
+
units_list.append(item[0])
|
50 |
+
|
51 |
+
st.title("Sentence Completion")
|
52 |
+
st.selectbox('Select a unit.', units_list, key='unit')
|
53 |
+
st.selectbox('How many question do you want?', [5,10,15,20], key='num_q')
|
54 |
+
|
55 |
+
unit = st.session_state.unit
|
56 |
+
num_q = st.session_state.num_q
|
57 |
+
input_tup = (unit, num_q)
|
58 |
+
|
59 |
+
st.header(unit)
|
60 |
+
|
61 |
+
st.write("Complete the sentences with the words from the word bank.")
|
62 |
+
|
63 |
+
questions = []
|
64 |
+
word_bank = []
|
65 |
+
|
66 |
+
query = "SELECT * FROM vocab WHERE unit = ? ORDER BY RANDOM() LIMIT ?"
|
67 |
+
|
68 |
+
for idx, item in enumerate(c.execute(query, input_tup)):
|
69 |
+
word = item[2]
|
70 |
+
word_bank.append(word)
|
71 |
+
sentence = item[4]
|
72 |
+
questions.append((idx, word, sentence, add_blanks(word, sentence)))
|
73 |
+
|
74 |
+
st.subheader("Word Bank")
|
75 |
+
random.shuffle(word_bank)
|
76 |
+
st.table(chunker(word_bank, 5))
|
77 |
+
|
78 |
+
with st.form("sentence_completion"):
|
79 |
+
for q in questions:
|
80 |
+
st.text_input(f'{q[0] + 1}. {q[3]}', key=q[0], placeholder="Type answer here")
|
81 |
+
submitted = st.form_submit_button(label="Submit", on_click=form_callback, args=(questions,))
|
82 |
+
if submitted:
|
83 |
+
st.write("Submitted")
|
84 |
+
conn.close()
|
85 |
+
|