From 8417e20851fc3ae8aba0e1f60b6fd1bfc9604034 Mon Sep 17 00:00:00 2001 From: Filip Gralinski Date: Sat, 21 Aug 2021 09:28:19 +0200 Subject: [PATCH] Slack announcements can be tested --- Application.hs | 1 + Foundation.hs | 2 ++ Handler/Announcements.hs | 23 +++++++++++++++++++++++ config/routes | 2 ++ gonito.cabal | 1 + messages/en.msg | 1 + templates/default-layout.hamlet | 1 + templates/test-announcements.hamlet | 4 ++++ 8 files changed, 35 insertions(+) create mode 100644 Handler/Announcements.hs create mode 100644 templates/test-announcements.hamlet diff --git a/Application.hs b/Application.hs index 3d51ae1..ac5dbab 100644 --- a/Application.hs +++ b/Application.hs @@ -62,6 +62,7 @@ import Handler.Dashboard import Handler.Evaluate import Handler.Swagger import Handler.Team +import Handler.Announcements -- This line actually creates our YesodDispatch instance. It is the second half -- of the call to mkYesodData which occurs in Foundation.hs. Please see the diff --git a/Foundation.hs b/Foundation.hs index 3a7c229..9829a39 100644 --- a/Foundation.hs +++ b/Foundation.hs @@ -166,6 +166,8 @@ instance Yesod App where isAuthorized (EditAchievementR _) _ = isAdmin isAuthorized ExtraPointsR _ = isAdmin + isAuthorized TestAnnouncementsR _ = isAdmin + isAuthorized DashboardR _ = regularAuthorization isAuthorized (ShowChallengeR _) _ = regularAuthorization diff --git a/Handler/Announcements.hs b/Handler/Announcements.hs new file mode 100644 index 0000000..003db32 --- /dev/null +++ b/Handler/Announcements.hs @@ -0,0 +1,23 @@ +module Handler.Announcements where + +import Import + +import Handler.Shared + +getTestAnnouncementsR :: Handler Html +getTestAnnouncementsR = do + app <- getYesod + + let webHook = appNewBestResultSlackHook $ appSettings app + + let name = case appLocation $ appSettings app of + Just loc -> "Gonito@" ++ loc + Nothing -> "Gonito" + + case webHook of + Just hook -> liftIO $ runSlackHook hook ("Test message from " ++ (slackLink app name "")) + Nothing -> return () + + defaultLayout $ do + setTitle "Test announcements" + $(widgetFile "test-announcements") diff --git a/config/routes b/config/routes index c865515..40d7ecb 100644 --- a/config/routes +++ b/config/routes @@ -16,6 +16,8 @@ /api/test-progress/#Int/#Int TestProgressJsonR GET /list-challenges ListChallengesR GET +/test-announcements TestAnnouncementsR GET + /api/list-challenges ListChallengesJsonR GET /api/leaderboard/#Text LeaderboardJsonR GET /api/challenge-my-submissions/#Text ChallengeMySubmissionsJsonR GET diff --git a/gonito.cabal b/gonito.cabal index b5b53d3..fe8fcff 100644 --- a/gonito.cabal +++ b/gonito.cabal @@ -63,6 +63,7 @@ library Handler.Swagger Handler.JWT Handler.Team + Handler.Announcements if flag(dev) || flag(library-only) cpp-options: -DDEVELOPMENT diff --git a/messages/en.msg b/messages/en.msg index 144f170..00caef3 100644 --- a/messages/en.msg +++ b/messages/en.msg @@ -106,3 +106,4 @@ AsTeam: As team InviteToTeam: Invite to team (give the identifier/login of a user) Join: Join NoTests: SOMETHING IS WRONG WITH THE CHALLENGE, THERE ARE NO TESTS DEFINED. MAYBE TEST DIRECTORY ARE MISSING OR THE CHALLENGE WAS CREATED/UPDATE IN THE INVALID MANNER +TestAnnouncements: test announcements diff --git a/templates/default-layout.hamlet b/templates/default-layout.hamlet index 63f23a5..86b0d95 100644 --- a/templates/default-layout.hamlet +++ b/templates/default-layout.hamlet @@ -37,6 +37,7 @@
  • _{MsgCoursesITeach}
  • _{MsgShowArchivedChallenges}
  • _{MsgShowAnnotations} +
  • _{MsgTestAnnouncements}