Spaces:
Sleeping
Sleeping
ignore pyc
Browse files- .gitignore +2 -1
- app.py +1 -1
- assignment_service.py +3 -1
- assignment_ui.py +5 -5
- dashboard_service.py +16 -1
.gitignore
CHANGED
@@ -1,2 +1,3 @@
|
|
1 |
xx.js
|
2 |
-
local_config.json
|
|
|
|
1 |
xx.js
|
2 |
+
local_config.json
|
3 |
+
*.pyc
|
app.py
CHANGED
@@ -3815,7 +3815,7 @@ with gr.Blocks(theme=THEME, css=CSS) as demo:
|
|
3815 |
with gr.Accordion("💡 提醒", open=True):
|
3816 |
gr.Markdown("Cutor 是你得力的作文批改小幫手,但它不是老師,和你一樣都在學習,偶爾也會出錯。如果你對於 Cutor 給你的建議有疑問,請提出和平台討論喔")
|
3817 |
with gr.Row():
|
3818 |
-
assignment_interface = create_assignment_ui(user_data, _AssignmentService, _SubmissionService, _DashboardService)
|
3819 |
|
3820 |
demo.load(
|
3821 |
init_params,
|
|
|
3815 |
with gr.Accordion("💡 提醒", open=True):
|
3816 |
gr.Markdown("Cutor 是你得力的作文批改小幫手,但它不是老師,和你一樣都在學習,偶爾也會出錯。如果你對於 Cutor 給你的建議有疑問,請提出和平台討論喔")
|
3817 |
with gr.Row():
|
3818 |
+
assignment_interface = create_assignment_ui(user_data, user_email, user_nickname, _AssignmentService, _SubmissionService, _DashboardService)
|
3819 |
|
3820 |
demo.load(
|
3821 |
init_params,
|
assignment_service.py
CHANGED
@@ -38,7 +38,7 @@ class AssignmentService:
|
|
38 |
|
39 |
return metadata
|
40 |
|
41 |
-
def create_assignment(self, user_data, assignment_type, metadata):
|
42 |
assignment_id = self.create_assignment_id()
|
43 |
timestamp_now = datetime.now(pytz.utc).astimezone(pytz.timezone('Asia/Taipei')).strftime("%Y-%m-%d %H:%M:%S")
|
44 |
host_url = "https://www.junyiacademy.org/event/jutor_write_2024/?__theme=light"
|
@@ -52,6 +52,8 @@ class AssignmentService:
|
|
52 |
new_assignment = {
|
53 |
"assignment_id": assignment_id,
|
54 |
"assigner_data": user_data,
|
|
|
|
|
55 |
"assignment_type": assignment_type,
|
56 |
"metadata": metadata,
|
57 |
"assignment_url": assignment_url,
|
|
|
38 |
|
39 |
return metadata
|
40 |
|
41 |
+
def create_assignment(self, user_data, user_email, user_nickname,assignment_type, metadata):
|
42 |
assignment_id = self.create_assignment_id()
|
43 |
timestamp_now = datetime.now(pytz.utc).astimezone(pytz.timezone('Asia/Taipei')).strftime("%Y-%m-%d %H:%M:%S")
|
44 |
host_url = "https://www.junyiacademy.org/event/jutor_write_2024/?__theme=light"
|
|
|
52 |
new_assignment = {
|
53 |
"assignment_id": assignment_id,
|
54 |
"assigner_data": user_data,
|
55 |
+
"assigner_email": user_email,
|
56 |
+
"assigner_nickname": user_nickname,
|
57 |
"assignment_type": assignment_type,
|
58 |
"metadata": metadata,
|
59 |
"assignment_url": assignment_url,
|
assignment_ui.py
CHANGED
@@ -2,7 +2,7 @@ import gradio as gr
|
|
2 |
from datetime import datetime
|
3 |
import pandas as pd
|
4 |
|
5 |
-
def create_assignment_ui(user_data, assignment_service, submission_service, dashboard_service):
|
6 |
with gr.Blocks() as assignment_interface:
|
7 |
with gr.Tab("老師|建立作業"):
|
8 |
with gr.Row():
|
@@ -65,7 +65,7 @@ def create_assignment_ui(user_data, assignment_service, submission_service, dash
|
|
65 |
outputs=[assignment_metadata]
|
66 |
).then(
|
67 |
assignment_service.create_assignment,
|
68 |
-
inputs=[user_data, assignment_type, assignment_metadata],
|
69 |
outputs=[assignment_data]
|
70 |
).then(
|
71 |
update_gr_assignment_url,
|
@@ -565,13 +565,13 @@ def create_assignment_ui(user_data, assignment_service, submission_service, dash
|
|
565 |
download_submissions_button = gr.Button("下載提交作業 CSV")
|
566 |
submissions_df_file = gr.File()
|
567 |
|
568 |
-
def update_dashboard(user_data):
|
569 |
# 獲取作業列表
|
570 |
assignments = dashboard_service.get_dashboard_data(user_data)
|
571 |
assignments_df = pd.DataFrame(assignments)
|
572 |
|
573 |
# 獲取所有提交的作業
|
574 |
-
submissions = dashboard_service.get_all_submissions(user_data)
|
575 |
submissions_df = pd.DataFrame(submissions)
|
576 |
|
577 |
return assignments_df, submissions_df
|
@@ -586,7 +586,7 @@ def create_assignment_ui(user_data, assignment_service, submission_service, dash
|
|
586 |
|
587 |
refresh_dashboard_button.click(
|
588 |
fn=update_dashboard,
|
589 |
-
inputs=[user_data],
|
590 |
outputs=[assignments_df, submissions_df]
|
591 |
)
|
592 |
|
|
|
2 |
from datetime import datetime
|
3 |
import pandas as pd
|
4 |
|
5 |
+
def create_assignment_ui(user_data, user_email, user_nickname, assignment_service, submission_service, dashboard_service):
|
6 |
with gr.Blocks() as assignment_interface:
|
7 |
with gr.Tab("老師|建立作業"):
|
8 |
with gr.Row():
|
|
|
65 |
outputs=[assignment_metadata]
|
66 |
).then(
|
67 |
assignment_service.create_assignment,
|
68 |
+
inputs=[user_data, user_email, user_nickname, assignment_type, assignment_metadata],
|
69 |
outputs=[assignment_data]
|
70 |
).then(
|
71 |
update_gr_assignment_url,
|
|
|
565 |
download_submissions_button = gr.Button("下載提交作業 CSV")
|
566 |
submissions_df_file = gr.File()
|
567 |
|
568 |
+
def update_dashboard(user_data, user_email, user_nickname):
|
569 |
# 獲取作業列表
|
570 |
assignments = dashboard_service.get_dashboard_data(user_data)
|
571 |
assignments_df = pd.DataFrame(assignments)
|
572 |
|
573 |
# 獲取所有提交的作業
|
574 |
+
submissions = dashboard_service.get_all_submissions(user_data, user_email, user_nickname)
|
575 |
submissions_df = pd.DataFrame(submissions)
|
576 |
|
577 |
return assignments_df, submissions_df
|
|
|
586 |
|
587 |
refresh_dashboard_button.click(
|
588 |
fn=update_dashboard,
|
589 |
+
inputs=[user_data, user_email, user_nickname],
|
590 |
outputs=[assignments_df, submissions_df]
|
591 |
)
|
592 |
|
dashboard_service.py
CHANGED
@@ -62,12 +62,25 @@ class DashboardService:
|
|
62 |
"assignment_data": assignment_data
|
63 |
}
|
64 |
|
65 |
-
def get_all_submissions(self, user_id):
|
66 |
assignments = self.assignment_service.get_user_assignments(user_id)
|
67 |
all_submissions = []
|
68 |
|
69 |
for assignment_id, assignment_info in assignments.items():
|
|
|
|
|
|
|
|
|
70 |
assignment_data = self.assignment_service.get_assignment(assignment_id)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
71 |
submission_ids = assignment_data.get("submission_ids", [])
|
72 |
|
73 |
for submission_id in submission_ids:
|
@@ -80,6 +93,8 @@ class DashboardService:
|
|
80 |
# "學生_id": submission_data["student_id"],
|
81 |
"學生Email": submission_data.get("student_email", "未提供"),
|
82 |
"學生姓名": submission_data["student_name"],
|
|
|
|
|
83 |
"繳交日期": submission_data["timestamp"],
|
84 |
"分數": score
|
85 |
})
|
|
|
62 |
"assignment_data": assignment_data
|
63 |
}
|
64 |
|
65 |
+
def get_all_submissions(self, user_id, user_email, user_nickname):
|
66 |
assignments = self.assignment_service.get_user_assignments(user_id)
|
67 |
all_submissions = []
|
68 |
|
69 |
for assignment_id, assignment_info in assignments.items():
|
70 |
+
# 20251016 新增
|
71 |
+
# 確認 assignment_data 是否包含 "assigner_email" and "assigner_nickname" 欄位
|
72 |
+
# 如果沒有,且 user_id 是 admin,則給 value = 空值
|
73 |
+
# 如果不是 admin 則給 value from user_email, user_nickname
|
74 |
assignment_data = self.assignment_service.get_assignment(assignment_id)
|
75 |
+
if "assigner_email" not in assignment_data["metadata"] or "assigner_nickname" not in assignment_data["metadata"]:
|
76 |
+
if user_id == "admin":
|
77 |
+
assignment_data["metadata"]["assigner_email"] = f"""查無email - {assignment_data["metadata"]["assigner_data"]["email"]}"""
|
78 |
+
assignment_data["metadata"]["assigner_nickname"] = f"""查無名稱 - {assignment_data["metadata"]["assigner_data"]["nickname"]}"""
|
79 |
+
else:
|
80 |
+
assignment_data["metadata"]["assigner_email"] = user_email
|
81 |
+
assignment_data["metadata"]["assigner_nickname"] = user_nickname
|
82 |
+
self.assignment_service.update_assignment(assignment_id, assignment_data)
|
83 |
+
|
84 |
submission_ids = assignment_data.get("submission_ids", [])
|
85 |
|
86 |
for submission_id in submission_ids:
|
|
|
93 |
# "學生_id": submission_data["student_id"],
|
94 |
"學生Email": submission_data.get("student_email", "未提供"),
|
95 |
"學生姓名": submission_data["student_name"],
|
96 |
+
"老師Email": assignment_data["metadata"]["assigner_email"],
|
97 |
+
"老師姓名": assignment_data["metadata"]["assigner_nickname"],
|
98 |
"繳交日期": submission_data["timestamp"],
|
99 |
"分數": score
|
100 |
})
|