feat(eeusersr): more on actions, TODO audit

This commit is contained in:
Sarah Vaupel 2020-03-03 15:44:09 +01:00
parent 4d48730abd
commit d4b784afba
4 changed files with 49 additions and 41 deletions

View File

@ -1737,11 +1737,13 @@ ExamUserMarkSynchronisedCsv: Prüfungsleistungen beim Export als synchronisiert
ExamUserMarkSynchronisedCsvTip: Sollen beim CSV-Export automatisch alle heruntergeladenen Prüfungsleistungen als synchronisiert markiert werden? Diese Markierung dient als Hinweis an andere Prüfungsbeauftragte und die Kursverwalter, dass die Leistung an der korrekten Stelle vermerkt wurde und keiner weiteren Handlung bedarf. ExamUserMarkSynchronisedCsvTip: Sollen beim CSV-Export automatisch alle heruntergeladenen Prüfungsleistungen als synchronisiert markiert werden? Diese Markierung dient als Hinweis an andere Prüfungsbeauftragte und die Kursverwalter, dass die Leistung an der korrekten Stelle vermerkt wurde und keiner weiteren Handlung bedarf.
ExamUserMarkedSynchronised n@Int: #{n} #{pluralDE n "Prüfungsleistung" "Prüfungsleistungen"} als synchronisiert markiert ExamUserMarkedSynchronised n@Int: #{n} #{pluralDE n "Prüfungsleistung" "Prüfungsleistungen"} als synchronisiert markiert
ExternalExamOccurrence: Termin
ExternalExamUserMarkSynchronisedCsv: Prüfungsleistungen beim Export als synchronisiert markieren ExternalExamUserMarkSynchronisedCsv: Prüfungsleistungen beim Export als synchronisiert markieren
ExternalExamUserMarkedSynchronised n@Int: #{n} #{pluralDE n "Prüfungsleistung" "Prüfungsleistungen"} als synchronisiert markiert ExternalExamUserMarkedSynchronised n@Int: #{n} #{pluralDE n "Prüfungsleistung" "Prüfungsleistungen"} als synchronisiert markiert
ExternalExamOccurrenceEdited n@Int: #{n} Termine editiert ExternalExamOccurrenceEdited count@Int64: #{count} #{pluralDE count "Termin" "Termine"} editiert
ExternalExamResultEdited n@Int: #{n} Prüfungsergebnisse editiert ExternalExamResultEdited count@Int64: #{count} #{pluralDE count "Prüfungsergebnis" "Prüfungsergebnisse"} editiert
ExternalExamUserDeleted n@Int: #{n} Prüfungsteilnehmer entfernt ExternalExamUserDeleted count@Int64: #{count} Prüfungsteilnehmer entfernt
ExamOfficeExamUsersHeading: Prüfungsleistungen ExamOfficeExamUsersHeading: Prüfungsleistungen

View File

@ -1729,11 +1729,13 @@ ExamUserMarkSynchronisedCsv: Mark exam achievements as synchronised while export
ExamUserMarkSynchronisedCsvTip: Should all exam achievements, that are included in the download, be marked as synchronised? Marking exam achievemnts as synchronised serves as a notice to other exam offices and course administrators, that the exam achievement has been dealt with properly such that no further action is required. ExamUserMarkSynchronisedCsvTip: Should all exam achievements, that are included in the download, be marked as synchronised? Marking exam achievemnts as synchronised serves as a notice to other exam offices and course administrators, that the exam achievement has been dealt with properly such that no further action is required.
ExamUserMarkedSynchronised n: Successfully marked #{n} #{pluralEN n "exam achievement" "exam achievements"} as synchronised ExamUserMarkedSynchronised n: Successfully marked #{n} #{pluralEN n "exam achievement" "exam achievements"} as synchronised
ExternalExamOccurrence: Occurrence
ExternalExamUserMarkSynchronisedCsv: Mark exam achievements as synchronised while exporting ExternalExamUserMarkSynchronisedCsv: Mark exam achievements as synchronised while exporting
ExternalExamUserMarkedSynchronised n: Successfully marked #{n} #{pluralEN n "exam result" "exam results"} as synchronised ExternalExamUserMarkedSynchronised n: Successfully marked #{n} #{pluralEN n "exam result" "exam results"} as synchronised
ExternalExamOccurrenceEdited n: Successfully edited #{n} #{pluralEN n "occurrence" "occurrences"} ExternalExamOccurrenceEdited count: Successfully edited #{count} #{pluralEN count "occurrence" "occurrences"}
ExternalExamResultEdited n: Successfully edited #{n} #{pluralEN n "exam result" "exam results"} ExternalExamResultEdited count: Successfully edited #{count} #{pluralEN count "exam result" "exam results"}
ExternalExamUserDeleted n: Successfully deleted #{n} #{pluralEN n "exam participant" "exam participants"} ExternalExamUserDeleted count: Successfully deleted #{count} #{pluralEN count "exam participant" "exam participants"}
ExamOfficeExamUsersHeading: Exam achievements ExamOfficeExamUsersHeading: Exam achievements

View File

@ -4,6 +4,9 @@ module Handler.ExamOffice.ExternalExam
import Import import Import
import qualified Data.Set as Set
import Database.Persist.Sql (deleteWhereCount, updateWhereCount)
import Handler.Utils import Handler.Utils
import Handler.Utils.ExternalExam.Users import Handler.Utils.ExternalExam.Users
@ -16,31 +19,38 @@ postEEGradesR tid ssh coursen examn = do
(usersResult, examUsersTable) <- makeExternalExamUsersTable EEUMGrades eExam (usersResult, examUsersTable) <- makeExternalExamUsersTable EEUMGrades eExam
usersResult' <- formResultMaybe usersResult $ \case usersResult' <- formResultMaybe usersResult $ \case
(ExternalExamUserMarkSynchronisedData, selectedResults) -> do (ExternalExamUserMarkSynchronisedData, selectedUsers) -> do
forM_ selectedResults externalExamResultMarkSynchronised forM_ selectedUsers externalExamResultMarkSynchronised
return . Just $ do return . Just $ do
addMessageI Success $ MsgExamUserMarkedSynchronised (length selectedResults) addMessageI Success $ MsgExamUserMarkedSynchronised $ length selectedUsers
redirect $ EExamR tid ssh coursen examn EEGradesR redirect $ EExamR tid ssh coursen examn EEGradesR
(ExternalExamUserEditOccurrenceData occ, selectedResults) -> do (ExternalExamUserEditOccurrenceData occ, selectedUsers) -> do
-- TODO work in progress nrEdited <- do
forM_ selectedResults $ externalExamEditOccurrence occ now <- liftIO getCurrentTime
updateWhereCount [ ExternalExamResultId <-. Set.toList selectedUsers ]
[ ExternalExamResultTime =. occ
, ExternalExamResultLastChanged =. now
]
return . Just $ do return . Just $ do
addMessageI Success $ MsgExternalExamOccurrenceEdited $ length selectedResults addMessageI Success $ MsgExternalExamOccurrenceEdited nrEdited
redirect $ EExamR tid ssh coursen examn EEGradesR redirect $ EExamR tid ssh coursen examn EEGradesR
(ExternalExamUserEditResultData examResult, selectedResults) -> do (ExternalExamUserEditResultData examResult, selectedUsers) -> do
-- TODO work in progress nrEdited <- do
forM_ selectedResults $ externalExamEditResult examResult now <- liftIO getCurrentTime
updateWhereCount [ ExternalExamResultId <-. Set.toList selectedUsers ]
[ ExternalExamResultResult =. examResult
, ExternalExamResultLastChanged =. now
]
return . Just $ do return . Just $ do
addMessageI Success $ MsgExternalExamResultEdited $ length selectedResults addMessageI Success $ MsgExternalExamResultEdited nrEdited
redirect $ EExamR tid ssh coursen examn EEGradesR redirect $ EExamR tid ssh coursen examn EEGradesR
(ExternalExamUserDeleteData, selectedResults) -> do (ExternalExamUserDeleteData, selectedUsers) -> do
-- TODO work in progress nrDeleted <- deleteWhereCount [ ExternalExamResultId <-. Set.toList selectedUsers ]
forM_ selectedResults externalExamDeleteUser
return . Just $ do return . Just $ do
addMessageI Success $ MsgExternalExamUserDeleted $ length selectedResults addMessageI Success $ MsgExternalExamUserDeleted nrDeleted
redirect $ EExamR tid ssh coursen examn EEGradesR redirect $ EExamR tid ssh coursen examn EEGradesR
return (usersResult', examUsersTable) return (usersResult', examUsersTable)

View File

@ -311,9 +311,21 @@ makeExternalExamUsersTable mode (Entity eeId ExternalExam{..}) = do
return (formRes, formWgt) return (formRes, formWgt)
EEUMUsers -> \csrf -> do EEUMUsers -> \csrf -> do
let let
-- TODO work in progress
actionMap :: Map ExternalExamUserAction (AForm Handler ExternalExamUserActionData) actionMap :: Map ExternalExamUserAction (AForm Handler ExternalExamUserActionData)
actionMap = Map.fromList actionMap = mconcat
[] [ singletonMap ExternalExamUserMarkSynchronised $
pure ExternalExamUserMarkSynchronisedData
--, singletonMap ExternalExamUserEditOccurrence $
-- ExternalExamUserEditOccurrenceData
-- <$> mempty
-- <$> aopt () (fslI MsgExamOccurrence) (Just Nothing)
--, singletonMap ExternalExamUserEditResult $
-- ExternalExamUserEditResultData
-- <$> mempty
, singletonMap ExternalExamUserDelete $
pure ExternalExamUserDeleteData
]
(res, formWgt) <- multiActionM actionMap (fslI MsgAction) Nothing csrf (res, formWgt) <- multiActionM actionMap (fslI MsgAction) Nothing csrf
let formRes = (, mempty) . First . Just <$> res let formRes = (, mempty) . First . Just <$> res
return (formRes, formWgt) return (formRes, formWgt)
@ -483,21 +495,3 @@ externalExamResultMarkSynchronised resId = do
| Entity _ UserFunction{..} <- userFunctions | Entity _ UserFunction{..} <- userFunctions
] ]
externalExamEditOccurrence :: UTCTime -> ExternalExamResultId -> DB ()
externalExamEditOccurrence _ _ = do
--uid <- requireAuthId
--now <- liftIO getCurrentTime
-- TODO work in progress
return ()
externalExamEditResult :: ExamResultPassedGrade -> ExternalExamResultId -> DB ()
externalExamEditResult _ _ = do
--uid <- requireAuthId
--now <- liftIO getCurrentTime
-- TODO work in progress
return ()
externalExamDeleteUser :: ExternalExamResultId -> DB ()
externalExamDeleteUser _ = do
-- TODO work in progress
return ()