feat(labels): set export label on external exam csv export
This commit is contained in:
parent
7b16351e4b
commit
2071f5912d
@ -135,8 +135,9 @@ data ExternalExamUserActionData
|
||||
| ExternalExamUserEditResultData ExamResultPassedGrade
|
||||
| ExternalExamUserDeleteData
|
||||
|
||||
newtype ExternalExamUserCsvExportDataGrades = ExternalExamUserCsvExportDataGrades
|
||||
data ExternalExamUserCsvExportDataGrades = ExternalExamUserCsvExportDataGrades
|
||||
{ csvEEUserMarkSynchronised :: Bool
|
||||
, csvEEUserSetLabel :: Bool
|
||||
} deriving (Eq, Ord, Read, Show, Generic, Typeable)
|
||||
|
||||
|
||||
@ -192,12 +193,18 @@ makeExternalExamUsersTable mode (Entity eeId ExternalExam{..}) = do
|
||||
coursen = externalExamCourseName
|
||||
examn = externalExamExamName
|
||||
|
||||
uid <- requireAuthId
|
||||
Entity uid currentUser <- requireAuth
|
||||
isLecturer <- hasReadAccessTo $ EExamR tid ssh coursen examn EEUsersR
|
||||
currentRoute <- fromMaybe (error "makeExternalExamUsersTable called from 404-handler") <$> getCurrentRoute
|
||||
MsgRenderer mr <- getMsgRenderer
|
||||
exampleTime <- over _utctDayTime (fromInteger . round . toRational) <$> liftIO getCurrentTime
|
||||
|
||||
userCsvExportLabel' <- E.select . E.from $ \examOfficeLabel -> do
|
||||
E.where_ $ maybe E.false (\expLbl -> examOfficeLabel E.^. ExamOfficeLabelName E.==. E.val expLbl) (csvExportLabel $ userCsvOptions currentUser)
|
||||
E.&&. examOfficeLabel E.^. ExamOfficeLabelUser E.==. E.val uid
|
||||
return examOfficeLabel
|
||||
let userCsvExportLabel = listToMaybe userCsvExportLabel'
|
||||
|
||||
let
|
||||
dbtSQLQuery = runReaderT $ do
|
||||
result <- view queryResult
|
||||
@ -363,8 +370,13 @@ makeExternalExamUsersTable mode (Entity eeId ExternalExam{..}) = do
|
||||
EEUMGrades -> Just DBTCsvEncode
|
||||
{ dbtCsvExportForm = ExternalExamUserCsvExportDataGrades
|
||||
<$> apopt checkBoxField (fslI MsgExternalExamUserMarkSynchronisedCsv & setTooltip MsgExternalExamUserMarkSynchronisedCsvTip) (Just False)
|
||||
<*> maybe
|
||||
(aforced checkBoxField (fslI MsgExamOfficeLabelSetLabelOnExport & setTooltip MsgExamOfficeLabelSetLabelOnExportForcedTip) False)
|
||||
(\expLbl -> apopt checkBoxField (fslI MsgExamOfficeLabelSetLabelOnExport & setTooltip (MsgExamOfficeLabelSetLabelOnExportTip expLbl)) (Just True))
|
||||
((examOfficeLabelName . entityVal) <$> userCsvExportLabel)
|
||||
, dbtCsvDoEncode = \ExternalExamUserCsvExportDataGrades{..} -> C.mapM $ \(E.Value k, row) -> do
|
||||
when csvEEUserMarkSynchronised $ externalExamResultMarkSynchronised k
|
||||
when csvEEUserSetLabel $ maybe (return ()) (\lbl -> void $ upsert (ExamOfficeExternalExamLabel eeId lbl) [ExamOfficeExternalExamLabelLabel =. lbl]) (entityKey <$> userCsvExportLabel)
|
||||
return $ encodeCsv' row
|
||||
, dbtCsvName, dbtCsvSheetName
|
||||
, dbtCsvNoExportData = Nothing
|
||||
|
||||
Reference in New Issue
Block a user