feat(eeusersr): more on actions, TODO audit
This commit is contained in:
parent
4d48730abd
commit
d4b784afba
@ -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
|
||||||
|
|
||||||
|
|||||||
@ -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
|
||||||
|
|
||||||
|
|||||||
@ -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)
|
||||||
|
|||||||
@ -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 ()
|
|
||||||
|
|||||||
Reference in New Issue
Block a user