vladyslav
commited on
Commit
·
aba2007
1
Parent(s):
f66f95f
Books available only for appropriate classes
Browse files- app.py +6 -5
- constants.py +10 -0
app.py
CHANGED
|
@@ -5,7 +5,7 @@ import random
|
|
| 5 |
import gradio as gr
|
| 6 |
from dotenv import load_dotenv
|
| 7 |
|
| 8 |
-
from constants import MODELS, MODELS_PATH, BOOKS, CLASSES, STUDENTS, MODEL_NAME_TO_CHOICE
|
| 9 |
from utils import save_results, get_test_by_student_class_book
|
| 10 |
|
| 11 |
load_dotenv()
|
|
@@ -249,7 +249,7 @@ def update_students(class_name, available_models):
|
|
| 249 |
students = STUDENTS.get(class_name, [])
|
| 250 |
return (
|
| 251 |
gr.update(choices=students, value=None, visible=True), # student_name_input
|
| 252 |
-
gr.update(choices=[], value=None, visible=False), # book_radio
|
| 253 |
gr.update(choices=available_models, value=None, visible=False), # model_radio
|
| 254 |
gr.update(value=""), # questions_output
|
| 255 |
gr.update(choices=[], value=None, visible=False), # answer_radio
|
|
@@ -270,7 +270,7 @@ def update_students(class_name, available_models):
|
|
| 270 |
)
|
| 271 |
|
| 272 |
|
| 273 |
-
def handle_student_name_change(student_name, available_models):
|
| 274 |
print("handle_student_name_change", available_models)
|
| 275 |
if student_name == "Вчитель":
|
| 276 |
available_models = list(MODELS.keys())
|
|
@@ -278,7 +278,7 @@ def handle_student_name_change(student_name, available_models):
|
|
| 278 |
print("handle_student_name_change available_models: ", available_models)
|
| 279 |
if not student_name:
|
| 280 |
return (
|
| 281 |
-
gr.update(choices=[], value=None, visible=False), # book_radio
|
| 282 |
gr.update(choices=available_models, value=None, visible=False), # model_radio
|
| 283 |
gr.update(value=""), # questions_output
|
| 284 |
gr.update(choices=[], value=None, visible=False), # answer_radio
|
|
@@ -299,7 +299,7 @@ def handle_student_name_change(student_name, available_models):
|
|
| 299 |
)
|
| 300 |
|
| 301 |
return (
|
| 302 |
-
gr.update(choices=list(
|
| 303 |
gr.update(choices=available_models, value=None, visible=False), # model_radio
|
| 304 |
gr.update(value=""), # questions_output
|
| 305 |
gr.update(choices=[], value=None, visible=False), # answer_radio
|
|
@@ -513,6 +513,7 @@ with gr.Blocks() as demo:
|
|
| 513 |
inputs=[
|
| 514 |
student_name_input,
|
| 515 |
available_models_state,
|
|
|
|
| 516 |
],
|
| 517 |
outputs=[
|
| 518 |
book_radio,
|
|
|
|
| 5 |
import gradio as gr
|
| 6 |
from dotenv import load_dotenv
|
| 7 |
|
| 8 |
+
from constants import MODELS, MODELS_PATH, BOOKS, CLASSES, STUDENTS, MODEL_NAME_TO_CHOICE, BOOKS_FOR_CLASSES
|
| 9 |
from utils import save_results, get_test_by_student_class_book
|
| 10 |
|
| 11 |
load_dotenv()
|
|
|
|
| 249 |
students = STUDENTS.get(class_name, [])
|
| 250 |
return (
|
| 251 |
gr.update(choices=students, value=None, visible=True), # student_name_input
|
| 252 |
+
gr.update(choices=list(BOOKS_FOR_CLASSES[class_name].keys()), value=None, visible=False), # book_radio
|
| 253 |
gr.update(choices=available_models, value=None, visible=False), # model_radio
|
| 254 |
gr.update(value=""), # questions_output
|
| 255 |
gr.update(choices=[], value=None, visible=False), # answer_radio
|
|
|
|
| 270 |
)
|
| 271 |
|
| 272 |
|
| 273 |
+
def handle_student_name_change(student_name, available_models, class_name):
|
| 274 |
print("handle_student_name_change", available_models)
|
| 275 |
if student_name == "Вчитель":
|
| 276 |
available_models = list(MODELS.keys())
|
|
|
|
| 278 |
print("handle_student_name_change available_models: ", available_models)
|
| 279 |
if not student_name:
|
| 280 |
return (
|
| 281 |
+
gr.update(choices=list(BOOKS_FOR_CLASSES[class_name].keys()), value=None, visible=False), # book_radio
|
| 282 |
gr.update(choices=available_models, value=None, visible=False), # model_radio
|
| 283 |
gr.update(value=""), # questions_output
|
| 284 |
gr.update(choices=[], value=None, visible=False), # answer_radio
|
|
|
|
| 299 |
)
|
| 300 |
|
| 301 |
return (
|
| 302 |
+
gr.update(choices=list(BOOKS_FOR_CLASSES[class_name].keys()), value=None, visible=True), # book_radio
|
| 303 |
gr.update(choices=available_models, value=None, visible=False), # model_radio
|
| 304 |
gr.update(value=""), # questions_output
|
| 305 |
gr.update(choices=[], value=None, visible=False), # answer_radio
|
|
|
|
| 513 |
inputs=[
|
| 514 |
student_name_input,
|
| 515 |
available_models_state,
|
| 516 |
+
class_name_input,
|
| 517 |
],
|
| 518 |
outputs=[
|
| 519 |
book_radio,
|
constants.py
CHANGED
|
@@ -30,6 +30,16 @@ BOOKS = {
|
|
| 30 |
"Іван Нечуйлевицький - Кайдашева сім'я": "kaydasheva-simia.json",
|
| 31 |
}
|
| 32 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 33 |
CLASSES = [
|
| 34 |
# "7-A", "7-B", "7-C", "7-D",
|
| 35 |
"9", "10"
|
|
|
|
| 30 |
"Іван Нечуйлевицький - Кайдашева сім'я": "kaydasheva-simia.json",
|
| 31 |
}
|
| 32 |
|
| 33 |
+
BOOKS_FOR_CLASSES = {
|
| 34 |
+
"9": {
|
| 35 |
+
"Тарас Шевченко - Катерина": "katerina.json",
|
| 36 |
+
"Тарас Шевченко - Сон (комедія)": "son.json",
|
| 37 |
+
},
|
| 38 |
+
"10": {
|
| 39 |
+
"Іван Нечуйлевицький - Кайдашева сім'я": "kaydasheva-simia.json",
|
| 40 |
+
},
|
| 41 |
+
}
|
| 42 |
+
|
| 43 |
CLASSES = [
|
| 44 |
# "7-A", "7-B", "7-C", "7-D",
|
| 45 |
"9", "10"
|