diff --git a/src/Handler/ExamOffice/Exam.hs b/src/Handler/ExamOffice/Exam.hs index 7d30e4719..5ad1d0133 100644 --- a/src/Handler/ExamOffice/Exam.hs +++ b/src/Handler/ExamOffice/Exam.hs @@ -445,7 +445,7 @@ postEGradesR tid ssh csh examn = do ( maybe (aforced checkBoxField (fslI MsgExamOfficeLabelSetLabelOnExport & setTooltip MsgExamOfficeLabelSetLabelOnExportForcedTip) False) (\expLbl -> apopt checkBoxField (fslI MsgExamOfficeLabelSetLabelOnExport & setTooltip (MsgExamOfficeLabelSetLabelOnExportTip expLbl)) (Just True)) - ((examOfficeLabelName . entityVal) <$> userCsvExportLabel) + (examOfficeLabelName . entityVal <$> userCsvExportLabel) ) isExamOffice , dbtCsvDoEncode = \ExamUserCsvExportData{..} -> C.mapM $ \(E.Value k, row) -> do diff --git a/src/Handler/ExamOffice/Exams.hs b/src/Handler/ExamOffice/Exams.hs index 0f61875e6..c6ec5ee37 100644 --- a/src/Handler/ExamOffice/Exams.hs +++ b/src/Handler/ExamOffice/Exams.hs @@ -136,15 +136,19 @@ postEOExamsR = do now <- liftIO getCurrentTime mr <- getMessageRender - getSynced <- lookupGetParam "synced" >>= return . \case - Just "yes" -> True - Just "no" -> False - _ -> userExamOfficeGetSynced + getSynced <- lookupGetParam "synced" <&> + (\case + Just "yes" -> True + Just "no" -> False + _ -> userExamOfficeGetSynced + ) - getLabels <- lookupGetParam "labels" >>= return . \case - Just "yes" -> True - Just "no" -> False - _ -> userExamOfficeGetLabels + getLabels <- lookupGetParam "labels" <&> + (\case + Just "yes" -> True + Just "no" -> False + _ -> userExamOfficeGetLabels + ) (examsRes, examsTable) <- runDB $ do let labelFilterNoLabelOption = Option @@ -214,14 +218,12 @@ postEOExamsR = do E.||. ( E.isNothing (exam E.?. ExamId) E.&&. E.isNothing (course E.?. CourseId) E.&&. E.not_ (E.isNothing $ externalExam E.?. ExternalExamId)) E.where_ $ E.val (not getLabels) E.||. ( E.val getLabels - E.&&. ( E.maybe E.true (\labelExamUser -> + E.&&. E.maybe E.true (\labelExamUser -> labelExamUser E.==. E.val uid - ) (mLabelExam E.?. ExamOfficeLabelUser) - ) - E.&&. ( E.maybe E.true (\labelExternalExamUser -> + ) (mLabelExam E.?. ExamOfficeLabelUser) + E.&&. E.maybe E.true (\labelExternalExamUser -> labelExternalExamUser E.==. E.val uid - ) (mLabelExternalExam E.?. ExamOfficeLabelUser) - ) + ) (mLabelExternalExam E.?. ExamOfficeLabelUser) ) return (exam, course, school, mLabelExam, externalExam, mLabelExternalExam) @@ -356,7 +358,7 @@ postEOExamsR = do , sortTerm (to $ E.unsafeCoalesce . sequence [views queryCourse (E.?. CourseTerm), views queryExternalExam (E.?. ExternalExamTerm)]) ] - dbtFilter = mconcat $ + dbtFilter = mconcat [ singletonMap "may-access" . FilterProjected $ (_etProjFilterMayAccess ?~) . getAny , singletonMap "has-results" . FilterProjected $ (_etProjFilterHasResults ?~) . getAny , singletonMap "is-synced" . FilterProjected $ (_etProjFilterIsSynced ?~) . getAny diff --git a/src/Handler/Profile.hs b/src/Handler/Profile.hs index e45e24e03..4a7cdcbab 100644 --- a/src/Handler/Profile.hs +++ b/src/Handler/Profile.hs @@ -335,7 +335,7 @@ examOfficeForm template = wFormToAForm $ do let userExamOfficeLabels :: EOLabels - userExamOfficeLabels = fromMaybe mempty $ eosettingsLabels <$> template + userExamOfficeLabels = maybe mempty eosettingsLabels template eoLabelsForm :: AForm Handler EOLabels eoLabelsForm = wFormToAForm $ do @@ -374,7 +374,7 @@ examOfficeForm template = wFormToAForm $ do (priorityRes, priorityView) <- mreq intField (fslI MsgExamOfficeLabelPriority & addName (nudge "priority")) (((\(_,_,x) -> x) <$> initRes) <|> Just 0) let res :: FormResult EOLabelData - res = (,,) <$> (FormSuccess labelIdent) <*> statusRes <*> priorityRes + res = (,,) <$> FormSuccess labelIdent <*> statusRes <*> priorityRes return (res, $(widgetFile "profile/exam-office-labels/cell")) miDelete :: Map ListPosition (Either ExamOfficeLabelName ExamOfficeLabelId) @@ -530,7 +530,7 @@ postProfileR = do let oldExamLabels = userExamOfficeLabels newExamLabels = stgExamOfficeSettings & eosettingsLabels - forM_ oldExamLabels $ \(Entity eolid ExamOfficeLabel{..}) -> unless ((Right eolid) `Map.member` newExamLabels || (Left examOfficeLabelName) `Map.member` newExamLabels) $ do + forM_ oldExamLabels $ \(Entity eolid ExamOfficeLabel{..}) -> unless (Right eolid `Map.member` newExamLabels || Left examOfficeLabelName `Map.member` newExamLabels) $ do E.delete . E.from $ \examOfficeExternalExamLabel -> E.where_ $ examOfficeExternalExamLabel E.^. ExamOfficeExternalExamLabelLabel E.==. E.val eolid E.delete . E.from $ \examOfficeExamLabel -> E.where_ $ examOfficeExamLabel E.^. ExamOfficeExamLabelLabel E.==. E.val eolid when (csvExportLabel userCsvOptions == Just examOfficeLabelName) $ diff --git a/src/Handler/Utils/ExternalExam/Users.hs b/src/Handler/Utils/ExternalExam/Users.hs index 056e08dec..9823e1905 100644 --- a/src/Handler/Utils/ExternalExam/Users.hs +++ b/src/Handler/Utils/ExternalExam/Users.hs @@ -376,7 +376,7 @@ makeExternalExamUsersTable mode (Entity eeId ExternalExam{..}) = do ( maybe (aforced checkBoxField (fslI MsgExamOfficeLabelSetLabelOnExport & setTooltip MsgExamOfficeLabelSetLabelOnExportForcedTip) False) (\expLbl -> apopt checkBoxField (fslI MsgExamOfficeLabelSetLabelOnExport & setTooltip (MsgExamOfficeLabelSetLabelOnExportTip expLbl)) (Just True)) - ((examOfficeLabelName . entityVal) <$> userCsvExportLabel) + (examOfficeLabelName . entityVal <$> userCsvExportLabel) ) isExamOffice , dbtCsvDoEncode = \ExternalExamUserCsvExportDataGrades{..} -> C.mapM $ \(E.Value k, row) -> do