From e2420130874728ad1e98ee5c590d0a20d5f2da5e Mon Sep 17 00:00:00 2001 From: Gregor Kleen Date: Fri, 26 Jul 2019 15:17:59 +0200 Subject: [PATCH] feat(exam-users): allow missing columns in csv import --- src/Handler/Exam/Users.hs | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/Handler/Exam/Users.hs b/src/Handler/Exam/Users.hs index 3eb9fd61b..ca8599861 100644 --- a/src/Handler/Exam/Users.hs +++ b/src/Handler/Exam/Users.hs @@ -115,7 +115,24 @@ instance ToNamedRecord ExamUserTableCsv where toNamedRecord = Csv.genericToNamedRecord examUserTableCsvOptions instance FromNamedRecord ExamUserTableCsv where - parseNamedRecord = Csv.genericParseNamedRecord examUserTableCsvOptions + parseNamedRecord csv -- Manually defined awaiting issue #427 + = ExamUserTableCsv + <$> csv .:? "surname" + <*> csv .:? "first-name" + <*> csv .:? "name" + <*> csv .:? "matriculation" + <*> csv .:? "field" + <*> csv .:? "degree" + <*> csv .:? "semester" + <*> csv .:? "occurrence" + <*> csv .:? "exercise-points" + <*> csv .:? "exercise-num-passes" + <*> csv .:? "exercise-points-max" + <*> csv .:? "exercise-num-passes-max" + <*> csv .:? "exam-result" + where + (.:?) :: FromField (Maybe a) => Csv.NamedRecord -> ByteString -> Csv.Parser (Maybe a) + m .:? name = Csv.lookup m name <|> return Nothing instance DefaultOrdered ExamUserTableCsv where headerOrder = Csv.genericHeaderOrder examUserTableCsvOptions