youngtsai commited on
Commit
fd98054
·
1 Parent(s): 4d86a6c

def get_all_assignments(self):

Browse files
Files changed (2) hide show
  1. assignment_service.py +27 -4
  2. 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 "無效的作業 ID"
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
- user_assignments = self.get_user_assignments(assigner_data)
 
 
 
 
 
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
- topic = metadata.get("topic", "未命名作業")
 
 
 
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
- # 處理 submission_deadline
144
- submission_deadline = assignment_data['metadata'].get('submission_deadline')
145
- formatted_deadline = "未設置截止日期"
 
 
 
 
 
 
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: