diff --git a/bases/rsptx/admin_server_api/routers/instructor.py b/bases/rsptx/admin_server_api/routers/instructor.py index 49ae9050c..ab0fb89b3 100644 --- a/bases/rsptx/admin_server_api/routers/instructor.py +++ b/bases/rsptx/admin_server_api/routers/instructor.py @@ -1206,15 +1206,18 @@ async def copy_assignment( target_course=course, importing_user=user, ) + message = f'Copied as "{result.name}". It is hidden until you make it visible.' + if result.duedate_warning: + message += f" {result.duedate_warning}" return JSONResponse( content={ "success": True, - "message": f'Copied as "{result.name}". It is hidden until you ' - f"make it visible.", + "message": message, "imported": [result.name], "skipped_existing": [], "skipped_readings": result.skipped_readings, "failed": [], + "duedate_warning": result.duedate_warning, } ) @@ -1237,16 +1240,25 @@ async def copy_assignment( parts.append(f"{len(bulk.failed)} could not be copied") if bulk.skipped_readings: parts.append(f"{bulk.skipped_readings} readings left behind") + if bulk.duedate_not_shifted: + parts.append(f"{bulk.duedate_not_shifted} due dates not adjusted") + + message = ", ".join(parts) + ". Copies are hidden until you make them visible." + if bulk.duedate_not_shifted: + message += ( + " Some due dates could not be adjusted because a course timezone " + "setting is invalid -- update it in Course Settings." + ) return JSONResponse( content={ "success": True, - "message": ", ".join(parts) - + ". Copies are hidden until you make them visible.", + "message": message, "imported": bulk.imported, "skipped_existing": bulk.skipped_existing, "skipped_readings": bulk.skipped_readings, "failed": bulk.failed, + "duedate_not_shifted": bulk.duedate_not_shifted, } ) diff --git a/bases/rsptx/assignment_server_api/assignment_builder/src/components/routes/AssignmentBuilder/components/importAssignment/ImportAssignmentModal.spec.tsx b/bases/rsptx/assignment_server_api/assignment_builder/src/components/routes/AssignmentBuilder/components/importAssignment/ImportAssignmentModal.spec.tsx index 1f428796c..72c34b14b 100644 --- a/bases/rsptx/assignment_server_api/assignment_builder/src/components/routes/AssignmentBuilder/components/importAssignment/ImportAssignmentModal.spec.tsx +++ b/bases/rsptx/assignment_server_api/assignment_builder/src/components/routes/AssignmentBuilder/components/importAssignment/ImportAssignmentModal.spec.tsx @@ -101,6 +101,7 @@ const { already_imported: false, imported_as: null, skipped_readings: 0, + duedate_warning: null, questions: [ { id: 11, diff --git a/bases/rsptx/assignment_server_api/assignment_builder/src/components/routes/AssignmentBuilder/components/importAssignment/ImportPreviewPanel.tsx b/bases/rsptx/assignment_server_api/assignment_builder/src/components/routes/AssignmentBuilder/components/importAssignment/ImportPreviewPanel.tsx index 59596ffa0..e000d4c5f 100644 --- a/bases/rsptx/assignment_server_api/assignment_builder/src/components/routes/AssignmentBuilder/components/importAssignment/ImportPreviewPanel.tsx +++ b/bases/rsptx/assignment_server_api/assignment_builder/src/components/routes/AssignmentBuilder/components/importAssignment/ImportPreviewPanel.tsx @@ -68,6 +68,12 @@ export const ImportPreviewPanel = ({ assignmentId, onClose }: ImportPreviewPanel ) : null} + {preview.duedate_warning ? ( + + {preview.duedate_warning} + + ) : null} + {preview.skipped_readings > 0 ? (