From 913320a2e962f70206b9aa3adbb5a96a1167a2a3 Mon Sep 17 00:00:00 2001 From: Sarah Vaupel <> Date: Mon, 26 Oct 2020 11:09:19 +0100 Subject: [PATCH] chore: add default schedule view to user settings --- config/settings.yml | 1 + models/users.model | 1 + src/Foundation/Yesod/Auth.hs | 1 + src/Handler/Users/Add.hs | 1 + src/Model.hs | 2 ++ src/Model/Types/Misc.hs | 6 ++++++ src/Settings.hs | 2 ++ test/Database/Fill.hs | 7 +++++++ 8 files changed, 21 insertions(+) diff --git a/config/settings.yml b/config/settings.yml index 3b64d7f84..10c2b4545 100644 --- a/config/settings.yml +++ b/config/settings.yml @@ -212,6 +212,7 @@ user-defaults: download-files: false warning-days: 1209600 show-sex: false + schedule-view: view-week # During central allocations lecturer-given ratings of applications (as # ExamGrades) are combined with a central priority. diff --git a/models/users.model b/models/users.model index a8eb73c12..e6c9df554 100644 --- a/models/users.model +++ b/models/users.model @@ -35,6 +35,7 @@ User json -- Each Uni2work user has a corresponding row in this table; create csvOptions CsvOptions "default='{}'::jsonb" sex Sex Maybe showSex Bool default=false + scheduleView ScheduleView default='ScheduleViewWeek' UniqueAuthentication ident -- Column 'ident' can be used as a row-key in this table UniqueEmail email -- Column 'email' can be used as a row-key in this table deriving Show Eq Ord Generic -- Haskell-specific settings for runtime-value representing a row in memory diff --git a/src/Foundation/Yesod/Auth.hs b/src/Foundation/Yesod/Auth.hs index 321f80691..cf7c67c92 100644 --- a/src/Foundation/Yesod/Auth.hs +++ b/src/Foundation/Yesod/Auth.hs @@ -256,6 +256,7 @@ upsertCampusUser upsertMode ldapData = do , userDownloadFiles = userDefaultDownloadFiles , userWarningDays = userDefaultWarningDays , userShowSex = userDefaultShowSex + , userScheduleView = userDefaultScheduleView , userNotificationSettings = def , userLanguages = Nothing , userCsvOptions = def diff --git a/src/Handler/Users/Add.hs b/src/Handler/Users/Add.hs index ab7364388..61a259cb1 100644 --- a/src/Handler/Users/Add.hs +++ b/src/Handler/Users/Add.hs @@ -75,6 +75,7 @@ postAdminUserAddR = do , userDownloadFiles = userDefaultDownloadFiles , userWarningDays = userDefaultWarningDays , userShowSex = userDefaultShowSex + , userScheduleView = userDefaultScheduleView , userNotificationSettings = def , userLanguages = Nothing , userCsvOptions = def diff --git a/src/Model.hs b/src/Model.hs index b450990ec..a38dbe6f1 100644 --- a/src/Model.hs +++ b/src/Model.hs @@ -21,6 +21,8 @@ import Settings.Cluster (ClusterSettingsKey) import Text.Blaze (ToMarkup(..)) +import Utils.Schedule.Types.ScheduleView + -- You can define all of your database entities in the entities file. -- You can find more information on persistent and how to declare entities diff --git a/src/Model/Types/Misc.hs b/src/Model/Types/Misc.hs index 7eee837b9..fd24b55e5 100644 --- a/src/Model/Types/Misc.hs +++ b/src/Model/Types/Misc.hs @@ -28,6 +28,7 @@ import qualified Data.Aeson as JSON import Database.Persist.Sql (PersistFieldSql(..)) import Utils.Lens.TH +import Utils.Schedule.Types.ScheduleView import Web.HttpApiData @@ -280,3 +281,8 @@ instance ToHttpApiData TokenBucketIdent where toUrlPiece = toPathPiece instance FromHttpApiData TokenBucketIdent where parseUrlPiece = maybe (Left "Could not parse TokenBucketIdent") Right . fromPathPiece + + +pathPieceJSON ''ScheduleView +pathPieceJSONKey ''ScheduleView +derivePersistField "ScheduleView" diff --git a/src/Settings.hs b/src/Settings.hs index 4e40ba9a4..d121aef92 100644 --- a/src/Settings.hs +++ b/src/Settings.hs @@ -75,6 +75,7 @@ import qualified Network.Minio as Minio import Data.Conduit.Algorithms.FastCDC +import Utils.Schedule.Types.ScheduleView -- | Runtime settings to configure this application. These settings can be -- loaded from various sources: defaults, environment variables, config files, @@ -211,6 +212,7 @@ data UserDefaultConf = UserDefaultConf , userDefaultDownloadFiles :: Bool , userDefaultWarningDays :: NominalDiffTime , userDefaultShowSex :: Bool + , userDefaultScheduleView :: ScheduleView } deriving (Show) data PWHashConf = PWHashConf diff --git a/test/Database/Fill.hs b/test/Database/Fill.hs index c39ab15a3..d479c5ed5 100644 --- a/test/Database/Fill.hs +++ b/test/Database/Fill.hs @@ -123,6 +123,7 @@ fillDb = do , userCsvOptions = def { csvFormat = csvPreset # CsvPresetRFC } , userSex = Just SexMale , userShowSex = userDefaultShowSex + , userScheduleView = userDefaultScheduleView } fhamann <- insert User { userIdent = "felix.hamann@campus.lmu.de" @@ -152,6 +153,7 @@ fillDb = do , userCsvOptions = def { csvFormat = csvPreset # CsvPresetExcel } , userSex = Just SexMale , userShowSex = userDefaultShowSex + , userScheduleView = userDefaultScheduleView } jost <- insert User { userIdent = "jost@tcs.ifi.lmu.de" @@ -181,6 +183,7 @@ fillDb = do , userSex = Just SexMale , userCsvOptions = def , userShowSex = userDefaultShowSex + , userScheduleView = userDefaultScheduleView } maxMuster <- insert User { userIdent = "max@campus.lmu.de" @@ -210,6 +213,7 @@ fillDb = do , userCsvOptions = def , userSex = Just SexMale , userShowSex = userDefaultShowSex + , userScheduleView = userDefaultScheduleView } tinaTester <- insert $ User { userIdent = "tester@campus.lmu.de" @@ -239,6 +243,7 @@ fillDb = do , userCsvOptions = def , userSex = Just SexNotApplicable , userShowSex = userDefaultShowSex + , userScheduleView = userDefaultScheduleView } svaupel <- insert User { userIdent = "vaupel.sarah@campus.lmu.de" @@ -268,6 +273,7 @@ fillDb = do , userCsvOptions = def , userSex = Just SexFemale , userShowSex = userDefaultShowSex + , userScheduleView = userDefaultScheduleView } let @@ -327,6 +333,7 @@ fillDb = do , userCsvOptions = def , userSex = Nothing , userShowSex = userDefaultShowSex + , userScheduleView = userDefaultScheduleView } where userIdent :: IsString t => t