diff --git a/models b/models index ab99fc582..160ea3fea 100644 --- a/models +++ b/models @@ -8,8 +8,7 @@ Term json start Day end Day holidays [Day] - active Bool - UniqueTerm name + active Bool Primary name deriving Show School json diff --git a/src/Handler/Assist.hs b/src/Handler/Assist.hs index 889cc68b2..bcf101935 100644 --- a/src/Handler/Assist.hs +++ b/src/Handler/Assist.hs @@ -14,8 +14,14 @@ import Database.Persist.Class as K (Key) -- import Text.Julius (RawJS (..)) -- TODO: Move elsewhere -termField :: Field (HandlerT UniWorX IO) TermIdentifier -termField = checkMMap checkTerm termToText textField +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" @@ -27,9 +33,8 @@ termField = checkMMap checkTerm termToText textField checkTerm t = case termFromText t of Left _ -> return $ Left errTextParse res@(Right ti) -> do --- term <- runDB $ get $ Key ti -- TODO: membershiptest instead? - term <- runDB $ getBy $ UniqueTerm ti -- TODO: use get instead of getBy? - return $ if isNothing term + term <- runDB $ get $ TermKey ti -- TODO: membershiptest instead? + return $ if mustexist && isNothing term then Left $ errTextFreigabe ti else res @@ -51,7 +56,7 @@ data NewCourseForm = NewCourseForm newCourseForm :: UserId -> Form NewCourseForm newCourseForm uid = renderBootstrap3 BootstrapBasicForm $ NewCourseForm <$> pure uid - <*> areq termField (set "Semester") Nothing + <*> areq termExistsField (set "Semester") Nothing -- <*> areq textField (set "Semester") Nothing <*> areq textField (set "Name des Kurses") Nothing <*> areq textField (set "Kurs Kürzel (3-4 Zeichen)") Nothing @@ -121,15 +126,23 @@ getShowTermR = 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 Semeser: + Liste der freigeschalteten Semester: $if null terms

Es wurden noch kein Semester freigeschaltetet. $else