chore(lms): minor code cleaning

This commit is contained in:
Steffen Jost 2022-02-08 09:36:11 +01:00
parent cdc297716a
commit 3eeac06c47
3 changed files with 63 additions and 54 deletions

18
models/lms.model Normal file
View File

@ -0,0 +1,18 @@
-- LMS Interface Tables, need regular processing by background jobs
--LmsUsers
-- user UserId
-- ident LmsIdent
-- -- pin LmsPin -- pin must not be stored, is only sent once and can be recreated?
-- deriving Generic
LmsUserlist
ident LmsIdent
failed Bool
UniqueLmsUserlist lmsident
deriving Generic
LmsResult
ident LmsIdent
success UTCTime
UniqueLmsResult lmsident
deriving Generic

View File

@ -133,7 +133,7 @@ breadcrumb HealthR = i18nCrumb MsgMenuHealth Nothing
breadcrumb InstanceR = i18nCrumb MsgMenuInstance Nothing breadcrumb InstanceR = i18nCrumb MsgMenuInstance Nothing
breadcrumb StatusR = i18nCrumb MsgMenuHealth Nothing -- never displayed breadcrumb StatusR = i18nCrumb MsgMenuHealth Nothing -- never displayed
breadcrumb LmsR = i18nCrumb MsgMenuLms Nothing -- breadcrumb LmsR = i18nCrumb MsgMenuLms Nothing
breadcrumb ProfileR = i18nCrumb MsgBreadcrumbProfile Nothing breadcrumb ProfileR = i18nCrumb MsgBreadcrumbProfile Nothing
breadcrumb SetDisplayEmailR = i18nCrumb MsgUserDisplayEmail $ Just ProfileR breadcrumb SetDisplayEmailR = i18nCrumb MsgUserDisplayEmail $ Just ProfileR

View File

@ -37,13 +37,13 @@ csvLmsUserlistFilename = makeLmsFilename "userliste"
csvLmsResultFilename :: IO Text csvLmsResultFilename :: IO Text
csvLmsResultFilename = makeLmsFilename "ergebnisse" csvLmsResultFilename = makeLmsFilename "ergebnisse"
--| create filenames as specified by LMS -- | Create filenames as specified by the LMS interface agreed with Know How AG
makeLmsFilename :: Text -> IO Text makeLmsFilename :: Text -> IO Text
makeLmsFilename ftag = do makeLmsFilename ftag = do
ymth <- get_ymth ymth <- get_ymth
return $ "fradrive_f_" <> ftag <> "_" <> ymth <> ".csv" return $ "fradrive_f_" <> ftag <> "_" <> ymth <> ".csv"
--| returns current datetime in YYYYMMDDHH format -- | Return current datetime in YYYYMMDDHH format
get_ymth :: IO Text get_ymth :: IO Text
get_ymth = do get_ymth = do
now <- getCurrentTime now <- getCurrentTime
@ -52,58 +52,49 @@ get_ymth = do
getLmsR :: Handler Html getLmsR :: Handler Html
getLmsR = do getLmsR = do
let dbtIdent = "lmsUsers" :: Text let dbtIdent = "lmsUsers" :: Text
dbtStyle = def { dbsFilterLayout = defaultDBSFilterLayout } dbtStyle = def { dbsFilterLayout = defaultDBSFilterLayout }
dbtSQLQuery q = error "TODO" dbtSQLQuery q = error "TODO"
dbtRowKey = error "TODO" dbtRowKey = error "TODO"
dbtProj = dbtProjSimple $ \(userIdent, userPin, doUserPinReset, doDeleteUser, isUserIntern) -> do dbtProj = dbtProjSimple $ \(userIdent, userPin, doUserPinReset, doDeleteUser, isUserIntern) -> do
return ("abcdefgh", "12345678", False, False, True) -- Warum keine Liste? return ("abcdefgh", "12345678", False, False, True) -- Warum keine Liste?
dbtColonnade = colChoices dbtColonnade = colChoices
dbtSorting = mempty dbtSorting = mempty
dbtFilter = mempty dbtFilter = mempty
dbtFilterUI = mempty dbtFilterUI = mempty
dbtParams = def dbtParams = def
dbtCsvName = "lms.csv" dbtCsvName = "lms.csv"
-- TODO: wip, for reference, see e.g. Handler.Course.Users or Handler.Exam. -- TODO: wip, for reference, see e.g. Handler.Course.Users or Handler.Exam.
dbtCsvEncode = do dbtCsvEncode = do
return $ DBTCsvEncode return $ DBTCsvEncode
{ dbtCsvExportForm = def { dbtCsvExportForm = def
, dbtCsvDoEncode = \UserCsvExportData{} -> C.mapM $ \(_, row) -> flip runReaderT row $ , dbtCsvDoEncode = \UserCsvExportData{} -> C.mapM $ \(_, row) -> flip runReaderT row $
LmsTableCsv -- <- for each desired column one view LmsTableCsv -- <- for each desired column one view
<$> view (hasUser . _userSurname) <$> _t1
<*> view (hasUser . _userFirstName) <*> _t2
<*> view (hasUser . _userDisplayName) <*> _t3
<*> view (hasUser . _userSex) <*> _t4
<*> view (hasUser . _userMatrikelnummer) <*> _t5
<*> view (hasUser . _userEmail) , dbtCsvName
<*> view _userStudyFeatures , dbtCsvSheetName
<*> preview (_userSubmissionGroup . _entityVal . _submissionGroupName) , dbtCsvNoExportData = Nothing -- ?
<*> view _userTableRegistration , dbtCsvHeader = return . Vector.filter csvColumns' . userTableCsvHeader showSex tutorials sheets . fromMaybe def
<*> userNote , dbtCsvExampleData = Nothing
<*> (over (_2.traverse._Just) (tutorialName . entityVal) . over (_1.traverse) (tutorialName . entityVal) <$> view _userTutorials)
-- <*> (over (_2.traverse._Just) (examName . entityVal) . over (_1.traverse) (examName . entityVal) <$> view _userExams)
<*> (over traverse (examName . entityVal) <$> view _userExams)
<*> views _userSheets (set (mapped . _1 . mapped) ())
, dbtCsvName
, dbtCsvSheetName
, dbtCsvNoExportData = Nothing -- ?
, dbtCsvHeader = return . Vector.filter csvColumns' . userTableCsvHeader showSex tutorials sheets . fromMaybe def
, dbtCsvExampleData = Nothing
}
-- TODO wip, for reference see e.g. Handler.Exam.Users
dbtCsvDecode = Just DBTCsvDecode
{ dbtCsvRowKey =
, dbtCsvComputeActions =
, dbtCsvClassifyAction =
, dbtCsvCoarsenActionClass =
, dbtCsvValidateActions =
, dbtCsvExecuteActions = -- <- actions based on sent data here
, dbtCsvRenderKey =
, dbtCsvRenderActionClass =
, dbtCsvRenderException =
} }
dbTable psValidator DBTable{..} -- TODO wip, for reference see e.g. Handler.Exam.Users
let heading = [whamlet|LMS|] dbtCsvDecode = Just DBTCsvDecode
{ dbtCsvRowKey = _1
, dbtCsvComputeActions = _2
, dbtCsvClassifyAction = _3
, dbtCsvCoarsenActionClass = _4
, dbtCsvValidateActions = _5
, dbtCsvExecuteActions = _6 -- <- actions based on sent data here
, dbtCsvRenderKey = _7
, dbtCsvRenderActionClass = _8
, dbtCsvRenderException = _9
}
dbTable psValidator DBTable{..}
heading = [whamlet|LMS|]
siteLayout heading $ do siteLayout heading $ do
setTitleI heading setTitleI heading
$(widgetFile "lms") $(widgetFile "lms")