FIxes #262
This commit is contained in:
parent
1eb751b5f0
commit
7a684f6cb6
@ -474,7 +474,7 @@ tagAccessPredicate AuthTime = APDB $ \route _ -> case route of
|
|||||||
(Just (Entity _ Course{courseRegisterFrom, courseRegisterTo}))
|
(Just (Entity _ Course{courseRegisterFrom, courseRegisterTo}))
|
||||||
| not registered
|
| not registered
|
||||||
, maybe False (now >=) courseRegisterFrom -- Nothing => no registration allowed
|
, maybe False (now >=) courseRegisterFrom -- Nothing => no registration allowed
|
||||||
, maybe True (now <=) courseRegisterTo -> return Authorized
|
, maybe True (now <=) courseRegisterTo -> return Authorized
|
||||||
(Just (Entity _ Course{courseDeregisterUntil}))
|
(Just (Entity _ Course{courseDeregisterUntil}))
|
||||||
| registered
|
| registered
|
||||||
, maybe True (now <=) courseDeregisterUntil -> return Authorized
|
, maybe True (now <=) courseDeregisterUntil -> return Authorized
|
||||||
|
|||||||
@ -444,25 +444,28 @@ getSheetNewR tid ssh csh = do
|
|||||||
E.orderBy [E.desc (sheet E.^. SheetActiveFrom)]
|
E.orderBy [E.desc (sheet E.^. SheetActiveFrom)]
|
||||||
E.limit 1
|
E.limit 1
|
||||||
return sheet
|
return sheet
|
||||||
|
now <- liftIO getCurrentTime
|
||||||
let template = case lastSheets of
|
let template = case lastSheets of
|
||||||
((Entity {entityVal=Sheet{..}}):_) -> Just $ SheetForm
|
((Entity {entityVal=Sheet{..}}):_) ->
|
||||||
{ sfName = stepTextCounterCI sheetName
|
let addTime = addWeeks $ max 1 $ succ $ weekDiff sheetActiveTo now
|
||||||
, sfDescription = sheetDescription
|
in Just $ SheetForm
|
||||||
, sfType = sheetType
|
{ sfName = stepTextCounterCI sheetName
|
||||||
, sfGrouping = sheetGrouping
|
, sfDescription = sheetDescription
|
||||||
, sfVisibleFrom = addOneWeek <$> sheetVisibleFrom
|
, sfType = sheetType
|
||||||
, sfActiveFrom = addOneWeek sheetActiveFrom
|
, sfGrouping = sheetGrouping
|
||||||
, sfActiveTo = addOneWeek sheetActiveTo
|
, sfVisibleFrom = addTime <$> sheetVisibleFrom
|
||||||
, sfSubmissionMode = sheetSubmissionMode
|
, sfActiveFrom = addTime sheetActiveFrom
|
||||||
, sfUploadMode = sheetUploadMode
|
, sfActiveTo = addTime sheetActiveTo
|
||||||
, sfSheetF = Nothing
|
, sfSubmissionMode = sheetSubmissionMode
|
||||||
, sfHintFrom = addOneWeek <$> sheetHintFrom
|
, sfUploadMode = sheetUploadMode
|
||||||
, sfHintF = Nothing
|
, sfSheetF = Nothing
|
||||||
, sfSolutionFrom = addOneWeek <$> sheetSolutionFrom
|
, sfHintFrom = addTime <$> sheetHintFrom
|
||||||
, sfSolutionF = Nothing
|
, sfHintF = Nothing
|
||||||
, sfMarkingF = Nothing
|
, sfSolutionFrom = addTime <$> sheetSolutionFrom
|
||||||
, sfMarkingText = sheetMarkingText
|
, sfSolutionF = Nothing
|
||||||
}
|
, sfMarkingF = Nothing
|
||||||
|
, sfMarkingText = sheetMarkingText
|
||||||
|
}
|
||||||
_other -> Nothing
|
_other -> Nothing
|
||||||
let action newSheet = -- More specific error message for new sheet could go here, if insertUnique returns Nothing
|
let action newSheet = -- More specific error message for new sheet could go here, if insertUnique returns Nothing
|
||||||
insertUnique $ newSheet
|
insertUnique $ newSheet
|
||||||
|
|||||||
@ -5,7 +5,8 @@ module Handler.Utils.DateTime
|
|||||||
, getTimeLocale, getDateTimeFormat
|
, getTimeLocale, getDateTimeFormat
|
||||||
, validDateTimeFormats, dateTimeFormatOptions
|
, validDateTimeFormats, dateTimeFormatOptions
|
||||||
, formatTimeMail
|
, formatTimeMail
|
||||||
, addOneWeek
|
, addOneWeek, addWeeks
|
||||||
|
, weekDiff
|
||||||
) where
|
) where
|
||||||
|
|
||||||
import Import
|
import Import
|
||||||
@ -14,7 +15,7 @@ import Data.Time.Zones
|
|||||||
import qualified Data.Time.Zones as TZ
|
import qualified Data.Time.Zones as TZ
|
||||||
|
|
||||||
import Data.Time hiding (formatTime, localTimeToUTC, utcToLocalTime)
|
import Data.Time hiding (formatTime, localTimeToUTC, utcToLocalTime)
|
||||||
import Data.Time.Clock (addUTCTime,nominalDay)
|
-- import Data.Time.Clock (addUTCTime,nominalDay)
|
||||||
import qualified Data.Time.Format as Time
|
import qualified Data.Time.Format as Time
|
||||||
|
|
||||||
import Data.Set (Set)
|
import Data.Set (Set)
|
||||||
@ -132,7 +133,22 @@ dateTimeFormatOptions sel = do
|
|||||||
|
|
||||||
|
|
||||||
addOneWeek :: UTCTime -> UTCTime
|
addOneWeek :: UTCTime -> UTCTime
|
||||||
addOneWeek = addUTCTime (7 * nominalDay)
|
addOneWeek = addWeeks 1
|
||||||
|
|
||||||
|
addWeeks :: Integer -> UTCTime -> UTCTime
|
||||||
|
addWeeks n utct = utct { utctDay = newDay }
|
||||||
|
where
|
||||||
|
oldDay = utctDay utct
|
||||||
|
-- newDay = addGregorianDurationRollOver $ stimes n calendarWeek -- only available in newer version 1.9 of Data.Time.Calendar
|
||||||
|
newDay = addDays (7*n) oldDay
|
||||||
|
|
||||||
|
weekDiff :: UTCTime -> UTCTime -> Integer
|
||||||
|
-- ^ Difference between times, rounded down to weeks
|
||||||
|
weekDiff old new = dayDiff `div` 7
|
||||||
|
where
|
||||||
|
dayOld = utctDay old
|
||||||
|
dayNew = utctDay new
|
||||||
|
dayDiff = diffDays dayNew dayOld
|
||||||
|
|
||||||
|
|
||||||
-- addOneTerm? -> Move Handler.Utils.DateTime
|
-- addOneTerm? -> Move Handler.Utils.DateTime
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user