From ac36b2367d3755cd3f805c91b4bc54b586a5d2f1 Mon Sep 17 00:00:00 2001 From: Henrik Nygren Date: Fri, 29 Sep 2023 10:22:00 +0300 Subject: [PATCH] Csv format fixes --- .../src/domain/csv_export/course_instance_export.rs | 9 +++------ .../src/domain/csv_export/exercise_tasks_export.rs | 4 ++-- .../server/src/domain/csv_export/submissions.rs | 10 +++++----- .../server/src/domain/csv_export/users_export.rs | 4 ++-- .../course-instance-management.spec.ts | 2 +- 5 files changed, 13 insertions(+), 16 deletions(-) diff --git a/services/headless-lms/server/src/domain/csv_export/course_instance_export.rs b/services/headless-lms/server/src/domain/csv_export/course_instance_export.rs index 67c9fd5b12af..8ba60fe1771c 100644 --- a/services/headless-lms/server/src/domain/csv_export/course_instance_export.rs +++ b/services/headless-lms/server/src/domain/csv_export/course_instance_export.rs @@ -1,8 +1,5 @@ use anyhow::Result; use bytes::Bytes; -/* -use futures::TryStreamExt; -use headless_lms_models::exercise_task_submissions; */ use headless_lms_models::course_instances; use async_trait::async_trait; @@ -47,7 +44,7 @@ impl CsvExportDataLoader for CompletionsExportOperation { } } -/// Writes the submissions as csv into the writer +/// Writes the completions as csv into the writer pub async fn export_completions( conn: &mut PgConnection, course_instance_id: Uuid, @@ -161,8 +158,8 @@ where for next in course_instances.into_iter() { let csv_row = vec![ next.id.to_string(), - next.created_at.to_string(), - next.updated_at.to_string(), + next.created_at.to_rfc3339(), + next.updated_at.to_rfc3339(), next.name.unwrap_or_default(), ]; writer.write_record(csv_row); diff --git a/services/headless-lms/server/src/domain/csv_export/exercise_tasks_export.rs b/services/headless-lms/server/src/domain/csv_export/exercise_tasks_export.rs index 299417ea1aab..52751f8b5bf8 100644 --- a/services/headless-lms/server/src/domain/csv_export/exercise_tasks_export.rs +++ b/services/headless-lms/server/src/domain/csv_export/exercise_tasks_export.rs @@ -68,8 +68,8 @@ where while let Some(next) = stream.try_next().await? { let csv_row = vec![ next.id.to_string(), - next.created_at.to_string(), - next.updated_at.to_string(), + next.created_at.to_rfc3339(), + next.updated_at.to_rfc3339(), next.exercise_type.to_string(), next.private_spec .map(|o| o.to_string()) diff --git a/services/headless-lms/server/src/domain/csv_export/submissions.rs b/services/headless-lms/server/src/domain/csv_export/submissions.rs index 17c76350e6f9..e17a0ae02add 100644 --- a/services/headless-lms/server/src/domain/csv_export/submissions.rs +++ b/services/headless-lms/server/src/domain/csv_export/submissions.rs @@ -71,7 +71,7 @@ where let csv_row = vec![ next.id.to_string(), next.user_id.to_string(), - next.created_at.to_string(), + next.created_at.to_rfc3339(), next.exercise_id.to_string(), next.exercise_task_id.to_string(), next.score_given.unwrap_or(0.0).to_string(), @@ -97,7 +97,7 @@ impl CsvExportDataLoader for CourseSubmissionExportOperation { conn: &mut PgConnection, token: AuthorizationToken, ) -> anyhow::Result { - export_course_submissions( + export_course_exercise_task_submissions( &mut *conn, self.course_id, CSVExportAdapter { @@ -110,7 +110,7 @@ impl CsvExportDataLoader for CourseSubmissionExportOperation { } /// Writes the course submissions as csv into the writer -pub async fn export_course_submissions( +pub async fn export_course_exercise_task_submissions( conn: &mut PgConnection, course_id: Uuid, writer: W, @@ -120,7 +120,7 @@ where { let headers = IntoIterator::into_iter([ "exercise_slide_submission_id".to_string(), - "id".to_string(), + "exercise_task_submission_id".to_string(), "user_id".to_string(), "created_at".to_string(), "course_instance_id".to_string(), @@ -138,7 +138,7 @@ where next.exercise_slide_submission_id.to_string(), next.id.to_string(), next.user_id.to_string(), - next.created_at.to_string(), + next.created_at.to_rfc3339(), next.course_instance_id .map(|o| o.to_string()) .unwrap_or_else(|| "".to_string()), diff --git a/services/headless-lms/server/src/domain/csv_export/users_export.rs b/services/headless-lms/server/src/domain/csv_export/users_export.rs index 29b822875868..9604e8eab078 100644 --- a/services/headless-lms/server/src/domain/csv_export/users_export.rs +++ b/services/headless-lms/server/src/domain/csv_export/users_export.rs @@ -70,8 +70,8 @@ where while let Some(next) = stream.try_next().await? { let csv_row = vec![ next.user_id.to_string(), - next.created_at.to_string(), - next.updated_at.to_string(), + next.created_at.to_rfc3339(), + next.updated_at.to_rfc3339(), next.first_name.unwrap_or_default(), next.last_name.unwrap_or_default(), next.email.to_string(), diff --git a/system-tests/src/tests/course-instance-management/course-instance-management.spec.ts b/system-tests/src/tests/course-instance-management/course-instance-management.spec.ts index f2cd337037e1..d2d8122b0dcc 100644 --- a/system-tests/src/tests/course-instance-management/course-instance-management.spec.ts +++ b/system-tests/src/tests/course-instance-management/course-instance-management.spec.ts @@ -39,7 +39,7 @@ test("test", async ({ page, headless }, testInfo) => { const submissionsCsvContents = await downloadToString(submissionsDownload) expect(submissionsCsvContents).toContain( - "exercise_slide_submission_id,id,user_id,created_at,course_instance_id,exercise_id,exercise_task_id,score_given,data_json", + "exercise_slide_submission_id,exercise_task_submission_id,user_id,created_at,course_instance_id,exercise_id,exercise_task_id,score_given,data_json", ) expect(submissionsCsvContents).toContain("e10557bd-9835-51b4-b0d9-f1d9689ebc8d") expect(submissionsCsvContents).toContain(