diff --git a/Handler/CreateChallenge.hs b/Handler/CreateChallenge.hs index 1f4d50e..bc5c2ce 100644 --- a/Handler/CreateChallenge.hs +++ b/Handler/CreateChallenge.hs @@ -329,7 +329,8 @@ addChallenge name publicRepoId privateRepoId deadline chan = do challengeStarred=False, challengeArchived=Just False, challengeVersion=commit, - challengeSensitive=Just False } + challengeSensitive=Just False, + challengeIsCompetition=Just False} _ <- runDB $ insert $ Version { versionChallenge=Just challengeId, diff --git a/Handler/ShowChallenge.hs b/Handler/ShowChallenge.hs index dafe47c..db721c1 100644 --- a/Handler/ShowChallenge.hs +++ b/Handler/ShowChallenge.hs @@ -139,10 +139,8 @@ instance ToSchema LeaderboardView where getLeaderboardJsonR :: Text -> Handler Value getLeaderboardJsonR challengeName = do - app <- getYesod - let leaderboardStyle = appLeaderboardStyle $ appSettings app - - Entity challengeId _ <- runDB $ getBy404 $ UniqueName challengeName + Entity challengeId challenge <- runDB $ getBy404 $ UniqueName challengeName + leaderboardStyle <- determineLeaderboardStyle challenge (leaderboard, (_, tests)) <- getLeaderboardEntries 1 leaderboardStyle challengeId return $ toJSON $ LeaderboardView { leaderboardViewTests = tests, @@ -192,12 +190,19 @@ toLeaderboardEntryView tests entry = LeaderboardEntryView { map (convertEvaluationToView (leaderboardEvaluationMap entry)) tests } +determineLeaderboardStyle :: Challenge -> Handler LeaderboardStyle +determineLeaderboardStyle challenge = do + app <- getYesod + let leaderboardStyle = appLeaderboardStyle $ appSettings app + return $ case challengeIsCompetition challenge of + Just True -> BySubmitter + _ -> leaderboardStyle + getShowChallengeR :: Text -> Handler Html getShowChallengeR challengeName = do app <- getYesod - let leaderboardStyle = appLeaderboardStyle $ appSettings app - challengeEnt@(Entity challengeId challenge) <- runDB $ getBy404 $ UniqueName challengeName + leaderboardStyle <- determineLeaderboardStyle challenge isHealthy <- isChallengeHealthy challenge diff --git a/config/models b/config/models index cfe3d98..515765e 100644 --- a/config/models +++ b/config/models @@ -59,6 +59,8 @@ Challenge archived Bool Maybe version SHA1 sensitive Bool Maybe + -- forces BySubmitter leaderboard style + isCompetition Bool Maybe -- challenge version Version -- introduced later, hence Maybe