Spaces:
Sleeping
Sleeping
def get_all_assignments(self):
Browse files- assignment_service.py +27 -4
- assignment_ui.py +9 -3
assignment_service.py
CHANGED
@@ -100,7 +100,7 @@ class AssignmentService:
|
|
100 |
assignment_data = json.loads(assignment_json)
|
101 |
except Exception as e:
|
102 |
print(f"Error: {e}")
|
103 |
-
return
|
104 |
return assignment_data
|
105 |
|
106 |
def get_assignment_submissions(self, assignment_id):
|
@@ -116,14 +116,37 @@ class AssignmentService:
|
|
116 |
print(f"Error: {e}")
|
117 |
user_assignments = {}
|
118 |
return user_assignments
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
119 |
|
120 |
def update_assignment_list(self, assigner_data):
|
121 |
choices = []
|
122 |
-
|
|
|
|
|
|
|
|
|
|
|
123 |
for assignment_id, assignment_info in user_assignments.items():
|
124 |
assignment_data = self.get_assignment(assignment_id)
|
125 |
metadata = assignment_data.get("metadata", {})
|
126 |
-
|
|
|
|
|
|
|
127 |
assignment_type = assignment_data.get("assignment_type", "未知類型")
|
128 |
timestamp = assignment_data.get("timestamp", "未知日期")
|
129 |
|
@@ -148,7 +171,7 @@ class AssignmentService:
|
|
148 |
if not self.gcs_service.delete_file(self.bucket_name, file_name):
|
149 |
raise Exception("Failed to delete assignment file")
|
150 |
|
151 |
-
#
|
152 |
user_assignments = self.get_user_assignments(user_data)
|
153 |
if assignment_id in user_assignments:
|
154 |
del user_assignments[assignment_id]
|
|
|
100 |
assignment_data = json.loads(assignment_json)
|
101 |
except Exception as e:
|
102 |
print(f"Error: {e}")
|
103 |
+
return {} # 返回空字典而不是字串
|
104 |
return assignment_data
|
105 |
|
106 |
def get_assignment_submissions(self, assignment_id):
|
|
|
116 |
print(f"Error: {e}")
|
117 |
user_assignments = {}
|
118 |
return user_assignments
|
119 |
+
|
120 |
+
def get_all_assignments(self):
|
121 |
+
try:
|
122 |
+
# 列出所有 'assignments/' 開頭的檔案
|
123 |
+
objects = self.gcs_service.list_files(self.bucket_name, prefix="assignments/")
|
124 |
+
assignments = {}
|
125 |
+
for obj in objects:
|
126 |
+
if obj.endswith(".json"):
|
127 |
+
assignment_id = obj.split("/")[-1].replace(".json", "")
|
128 |
+
assignment_json = self.gcs_service.download_as_string(self.bucket_name, obj)
|
129 |
+
assignments[assignment_id] = json.loads(assignment_json)
|
130 |
+
except Exception as e:
|
131 |
+
print(f"Error: {e}")
|
132 |
+
assignments = {}
|
133 |
+
return assignments
|
134 |
|
135 |
def update_assignment_list(self, assigner_data):
|
136 |
choices = []
|
137 |
+
if assigner_data == "admin":
|
138 |
+
user_assignments = self.get_all_assignments()
|
139 |
+
else:
|
140 |
+
user_assignments = self.get_user_assignments(assigner_data)
|
141 |
+
|
142 |
+
|
143 |
for assignment_id, assignment_info in user_assignments.items():
|
144 |
assignment_data = self.get_assignment(assignment_id)
|
145 |
metadata = assignment_data.get("metadata", {})
|
146 |
+
if metadata:
|
147 |
+
topic = metadata.get("topic", "未命名作業")
|
148 |
+
else:
|
149 |
+
topic = "未命名作業"
|
150 |
assignment_type = assignment_data.get("assignment_type", "未知類型")
|
151 |
timestamp = assignment_data.get("timestamp", "未知日期")
|
152 |
|
|
|
171 |
if not self.gcs_service.delete_file(self.bucket_name, file_name):
|
172 |
raise Exception("Failed to delete assignment file")
|
173 |
|
174 |
+
# 從用戶的作業列表中刪
|
175 |
user_assignments = self.get_user_assignments(user_data)
|
176 |
if assignment_id in user_assignments:
|
177 |
del user_assignments[assignment_id]
|
assignment_ui.py
CHANGED
@@ -140,9 +140,15 @@ def create_assignment_ui(user_data, assignment_service, submission_service, dash
|
|
140 |
return assignment_list, assignment_data, assignment_data_html, submissions_list_json, submissions_list_radio, submission_data_json, submission_data_html
|
141 |
|
142 |
def update_assignment_data_html(assignment_data):
|
143 |
-
#
|
144 |
-
|
145 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
146 |
|
147 |
if submission_deadline is not None:
|
148 |
try:
|
|
|
140 |
return assignment_list, assignment_data, assignment_data_html, submissions_list_json, submissions_list_radio, submission_data_json, submission_data_html
|
141 |
|
142 |
def update_assignment_data_html(assignment_data):
|
143 |
+
# check metadata in assignment_data
|
144 |
+
metadata = assignment_data.get('metadata', {})
|
145 |
+
if metadata:
|
146 |
+
# 處理 submission_deadline
|
147 |
+
submission_deadline = assignment_data['metadata'].get('submission_deadline')
|
148 |
+
formatted_deadline = "未設置截止日期"
|
149 |
+
else:
|
150 |
+
submission_deadline = None
|
151 |
+
formatted_deadline = "未設置截止日期"
|
152 |
|
153 |
if submission_deadline is not None:
|
154 |
try:
|