From ed5d871182954e2f0a9a5063f61277d925628c40 Mon Sep 17 00:00:00 2001 From: Gregor Kleen Date: Sun, 29 Nov 2020 13:13:17 +0100 Subject: [PATCH] fix(rooms): honor roomHidden --- src/Handler/Course/Show.hs | 8 ++++++-- src/Handler/Exam/Show.hs | 4 +++- src/Handler/News.hs | 4 +++- src/Handler/Tutorial/List.hs | 4 +++- src/Model/Types/Changelog.hs | 1 + .../i18n/changelog/honor-room-hidden.de-de-formal.hamlet | 2 ++ templates/i18n/changelog/honor-room-hidden.en-eu.hamlet | 2 ++ 7 files changed, 20 insertions(+), 5 deletions(-) create mode 100644 templates/i18n/changelog/honor-room-hidden.de-de-formal.hamlet create mode 100644 templates/i18n/changelog/honor-room-hidden.en-eu.hamlet diff --git a/src/Handler/Course/Show.hs b/src/Handler/Course/Show.hs index 022a35559..f62c80d8c 100644 --- a/src/Handler/Course/Show.hs +++ b/src/Handler/Course/Show.hs @@ -97,7 +97,9 @@ getCShowR tid ssh csh = do events' <- fmap (sortOn $ courseEventTime . entityVal . view _1) . lift . E.select . E.from $ \courseEvent -> do E.where_ $ courseEvent E.^. CourseEventCourse E.==. E.val cid - return (courseEvent, maybe E.false (flip showCourseEventRoom courseEvent . E.val) mbAid) + let showRoom = maybe E.false (flip showCourseEventRoom courseEvent . E.val) mbAid + E.||. E.not_ (courseEvent E.^. CourseEventRoomHidden) + return (courseEvent, showRoom) events <- mapM (\(Entity evId ev, E.Value showRoom) -> (, ev, showRoom) <$> encrypt evId) events' hasSubmissionGroups <- lift . E.selectExists . E.from $ \(submissionGroupUser `E.InnerJoin` submissionGroup) -> do @@ -157,7 +159,9 @@ getCShowR tid ssh csh = do dbtSQLQuery tutorial = do E.where_ $ tutorial E.^. TutorialCourse E.==. E.val cid - return (tutorial, maybe E.false (flip showTutorialRoom tutorial . E.val) mbAid) + let showRoom = maybe E.false (flip showTutorialRoom tutorial . E.val) mbAid + E.||. E.not_ (tutorial E.^. TutorialRoomHidden) + return (tutorial, ) dbtRowKey = (E.^. TutorialId) dbtProj = traverse $ return . over _2 E.unValue dbtColonnade = dbColonnade $ mconcat diff --git a/src/Handler/Exam/Show.hs b/src/Handler/Exam/Show.hs index 0540e10ce..c72231c77 100644 --- a/src/Handler/Exam/Show.hs +++ b/src/Handler/Exam/Show.hs @@ -65,8 +65,10 @@ getEShowR tid ssh csh examn = do = E.subSelectCount . E.from $ \examRegistration -> E.where_ $ examRegistration E.^. ExamRegistrationExam E.==. E.val eId E.&&. examRegistration E.^. ExamRegistrationOccurrence E.==. E.just (examOccurrence E.^. ExamOccurrenceId) + showRoom = maybe E.false (flip showExamOccurrenceRoom examOccurrence . E.val) mUid + E.||. E.not_ (examOccurrence E.^. ExamOccurrenceRoomHidden) E.orderBy [E.desc registered, E.asc $ examOccurrence E.^. ExamOccurrenceStart, E.asc $ examOccurrence E.^. ExamOccurrenceRoom] - return (examOccurrence, registered, registeredCount, maybe E.false (flip showExamOccurrenceRoom examOccurrence . E.val) mUid) + return (examOccurrence, registered, registeredCount, showRoom) registeredCount <- fromIntegral <$> count [ ExamRegistrationExam ==. eId ] diff --git a/src/Handler/News.hs b/src/Handler/News.hs index 805f46e0c..fa26931dd 100644 --- a/src/Handler/News.hs +++ b/src/Handler/News.hs @@ -247,7 +247,9 @@ newsUpcomingExams uid = do E.&&. earliestOccurrence E.<=. E.just (E.val fortnight) -- E.&&. earliestOccurrence E.>=. E.just (E.val now) E.where_ $ regToWithinFortnight E.||. startExamFortnight E.||. startOccurFortnight E.||. startEarliest - return (course, exam, register, occurrence, showExamOccurrenceRoom (E.val uid) occurrence) + let showRoom = showExamOccurrenceRoom (E.val uid) examOccurrence + E.||. E.not_ (examOccurrence E.^. ExamOccurrenceRoomHidden) + return (course, exam, register, occurrence, showRoom) dbtRowKey = queryExam >>> (E.^. ExamId) dbtProj = return dbtColonnade = dbColonnade $ mconcat diff --git a/src/Handler/Tutorial/List.hs b/src/Handler/Tutorial/List.hs index aea23a3a9..348e86e16 100644 --- a/src/Handler/Tutorial/List.hs +++ b/src/Handler/Tutorial/List.hs @@ -34,7 +34,9 @@ getCTutorialListR tid ssh csh = do let participants :: E.SqlExpr (E.Value Int) participants = E.subSelectCount . E.from $ \tutorialParticipant -> E.where_ $ tutorialParticipant E.^. TutorialParticipantTutorial E.==. tutorial E.^. TutorialId - return (tutorial, participants, maybe E.false (flip showTutorialRoom tutorial . E.val) muid) + let showRoom = maybe E.false (flip showTutorialRoom tutorial . E.val) muid + E.||. E.not_ (tutorial E.^. TutorialRoomHidden) + return (tutorial, participants, showRoom) dbtRowKey = (E.^. TutorialId) dbtProj = return . over (_dbrOutput . _2) E.unValue . over (_dbrOutput . _3) E.unValue dbtColonnade = dbColonnade $ mconcat diff --git a/src/Model/Types/Changelog.hs b/src/Model/Types/Changelog.hs index 321b300ad..16b660fe3 100644 --- a/src/Model/Types/Changelog.hs +++ b/src/Model/Types/Changelog.hs @@ -40,6 +40,7 @@ classifyChangelogItem = \case ChangelogAllocationCourseAcceptSubstitutesFixed -> ChangelogItemBugfix ChangelogStoredMarkup -> ChangelogItemBugfix ChangelogFixPersonalisedSheetFilesKeep -> ChangelogItemBugfix + ChangelogHonorRoomHidden -> ChangelogItemBugfix _other -> ChangelogItemFeature changelogItemDays :: Map ChangelogItem Day diff --git a/templates/i18n/changelog/honor-room-hidden.de-de-formal.hamlet b/templates/i18n/changelog/honor-room-hidden.de-de-formal.hamlet new file mode 100644 index 000000000..f696d9e27 --- /dev/null +++ b/templates/i18n/changelog/honor-room-hidden.de-de-formal.hamlet @@ -0,0 +1,2 @@ +$newline never +„Raum nur für Teilnehmer“ u.Ä. wird nun korrekt beachtet. diff --git a/templates/i18n/changelog/honor-room-hidden.en-eu.hamlet b/templates/i18n/changelog/honor-room-hidden.en-eu.hamlet new file mode 100644 index 000000000..fa0a5050a --- /dev/null +++ b/templates/i18n/changelog/honor-room-hidden.en-eu.hamlet @@ -0,0 +1,2 @@ +$newline never +“Room only for participants” and similiar settings are now honored.