From 2949ce3a8abbd7c4ae5144a8bcff925f4b3cb4fc Mon Sep 17 00:00:00 2001 From: Filip Gralinski Date: Mon, 25 Sep 2017 12:47:01 +0200 Subject: [PATCH] improve HowTo --- Handler/ShowChallenge.hs | 12 ++++++++++-- templates/challenge-how-to.hamlet | 10 +++++++++- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/Handler/ShowChallenge.hs b/Handler/ShowChallenge.hs index adbea1d..9984958 100644 --- a/Handler/ShowChallenge.hs +++ b/Handler/ShowChallenge.hs @@ -70,7 +70,15 @@ getChallengeHowToR :: Text -> Handler Html getChallengeHowToR name = do (Entity _ challenge) <- runDB $ getBy404 $ UniqueName name maybeUser <- maybeAuth - challengeLayout False challenge (challengeHowTo challenge (idToBeShown challenge maybeUser)) + let isIDSet = case maybeUser of + Just (Entity _ user) -> isJust $ userLocalId user + Nothing -> False + isSSHUploaded <- case maybeUser of + Just (Entity userId _) -> do + keys <- runDB $ selectList [PublicKeyUser ==. userId] [] + return $ not (null keys) + Nothing -> return False + challengeLayout False challenge (challengeHowTo challenge (idToBeShown challenge maybeUser) isIDSet isSSHUploaded) idToBeShown challenge maybeUser = case maybeUser of @@ -82,7 +90,7 @@ idToBeShown challenge maybeUser = defaultRepo challenge maybeUser = "ssh://gitolite@gonito.net/" ++ (idToBeShown challenge maybeUser) ++ "/" ++ (challengeName challenge) -challengeHowTo challenge idToBeShown = $(widgetFile "challenge-how-to") +challengeHowTo challenge idToBeShown isIDSet isSSHUploaded = $(widgetFile "challenge-how-to") getChallengeSubmissionR :: Text -> Handler Html getChallengeSubmissionR name = do diff --git a/templates/challenge-how-to.hamlet b/templates/challenge-how-to.hamlet index 8dcbb07..b7f43bf 100644 --- a/templates/challenge-how-to.hamlet +++ b/templates/challenge-how-to.hamlet @@ -19,7 +19,15 @@

Get your repo -

You need to upload your SSH public key (see your account) if you want to have a repo hosted on Gonito.net, then: +$if not isIDSet || not isSSHUploaded +

You need to + $if not isIDSet + \ set up your ID + $if not isSSHUploaded + \ and + $if not isSSHUploaded + \ upload your SSH public key + \ (see your account) if you want to have a repo hosted on Gonito.net, then:

   git clone ssh://gitolite@gonito.net/#{idToBeShown}/#{challengeName challenge}