From 40fab9a3622fe86eaf40adb7ebbe2d909b65ffde Mon Sep 17 00:00:00 2001 From: SJost Date: Fri, 6 Oct 2017 22:22:30 +0200 Subject: [PATCH] Term Handler moved to its own module --- src/Application.hs | 3 +- src/Handler/Assist.hs | 116 +------------------------------------- src/Handler/Term.hs | 108 +++++++++++++++++++++++++++++++++++ src/Handler/Utils.hs | 5 ++ src/Handler/Utils/Term.hs | 35 ++++++++++++ 5 files changed, 152 insertions(+), 115 deletions(-) create mode 100644 src/Handler/Term.hs create mode 100644 src/Handler/Utils.hs create mode 100644 src/Handler/Utils/Term.hs diff --git a/src/Application.hs b/src/Application.hs index 67453bcba..c119fd8e6 100644 --- a/src/Application.hs +++ b/src/Application.hs @@ -38,10 +38,11 @@ import System.Log.FastLogger (defaultBufSize, newStdoutLoggerSet, toLogStr) -- Import all relevant handler modules here. --- Don't forget to add new modules to your cabal file! +-- Don't forget to add new modules to your cabal file! import Handler.Common import Handler.Home import Handler.Profile +import Handler.Term import Handler.Assist -- This line actually creates our YesodDispatch instance. It is the second half diff --git a/src/Handler/Assist.hs b/src/Handler/Assist.hs index 82b917a76..37a58dc2a 100644 --- a/src/Handler/Assist.hs +++ b/src/Handler/Assist.hs @@ -7,36 +7,14 @@ module Handler.Assist where import Import +import Handler.Utils import qualified Data.Text as T -import Data.Maybe +-- import Data.Maybe import Yesod.Form.Bootstrap3 (BootstrapFormLayout (..), renderBootstrap3) -import Database.Persist.Class as K (Key) -- import Text.Julius (RawJS (..)) -- TODO: Move elsewhere -termExistsField :: Field (HandlerT UniWorX IO) TermIdentifier -termExistsField = termField True -termNewField :: Field (HandlerT UniWorX IO) TermIdentifier -termNewField = termField False - -termField :: Bool -> Field (HandlerT UniWorX IO) TermIdentifier -termField mustexist = checkMMap checkTerm termToText textField - where - errTextParse :: Text - errTextParse = "Semester: S oder W gefolgt von Jahreszahl" - - errTextFreigabe :: TermIdentifier -> Text - errTextFreigabe ti = "Semester " `T.append` (termToText ti) `T.append` " wurde noch nicht freigegeben." - - checkTerm :: Text -> HandlerT UniWorX IO (Either Text TermIdentifier) - checkTerm t = case termFromText t of - Left _ -> return $ Left errTextParse - res@(Right ti) -> do - term <- runDB $ get $ TermKey ti -- TODO: membershiptest instead? - return $ if mustexist && isNothing term - then Left $ errTextFreigabe ti - else res @@ -119,93 +97,3 @@ postNewCourseR = do setTitle "Welcome To Yesod!" $(widgetFile "homepage") -} - - -getShowTermsR :: Handler Html -getShowTermsR = do - terms <- runDB $ selectList [] [Desc TermStart] - defaultLayout $ do - setTitle "Freigeschaltete Semester" - -- TODO: provide common utility function for formatting Times - -- TODO: turn into proper table - [whamlet| -

- Liste der freigeschalteten Semester: - $if null terms -

Es wurden noch kein Semester freigeschaltetet. - $else -