chore: bump versions

This commit is contained in:
Gregor Kleen 2021-06-28 09:21:34 +02:00
parent adbbb8db6b
commit 5ade6c65d6
155 changed files with 377 additions and 406 deletions

View File

@ -6,7 +6,7 @@ workflow:
default:
image:
name: fpco/stack-build:lts-16.31
name: fpco/stack-build:lts-17.15
variables:
STACK_ROOT: "${CI_PROJECT_DIR}/.stack"

View File

@ -13,6 +13,7 @@
- ignore: { name: "Redundant void" }
- ignore: { name: "Too strict maybe" }
- ignore: { name: "Use Just" }
- ignore: { name: "Use const" }
- arguments:
- -XQuasiQuotes

View File

@ -2,11 +2,11 @@
"nodes": {
"flake-utils": {
"locked": {
"lastModified": 1619345332,
"narHash": "sha256-qHnQkEp1uklKTpx3MvKtY6xzgcqXDsz5nLilbbuL+3A=",
"lastModified": 1623875721,
"narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "2ebf2558e5bf978c7fb8ea927dfaed8fefab2e28",
"rev": "f7e004a55b120c02ecb6219596820fcd32ca8772",
"type": "github"
},
"original": {
@ -18,11 +18,11 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1620323686,
"narHash": "sha256-+gfcE3YTGl+Osc8HzOUXSFO8/0PAK4J8ZxCXZ4hjXHI=",
"lastModified": 1624788075,
"narHash": "sha256-xzO2aL5gGejNvey2jKGnbnFXbo99pdytlY5FF/IhvAE=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "dfacb8329b2236688b9a1e705116203a213b283a",
"rev": "4ba70da807359ed01d662763a96c7b442762e5ef",
"type": "github"
},
"original": {

View File

@ -53,7 +53,7 @@ AllocationUser
AllocationDeregister -- self-inflicted user-deregistrations from an allocated course
user UserId
course CourseId Maybe
course CourseId Maybe OnDeleteSetNull OnUpdateCascade
time UTCTime
reason Text Maybe -- if this deregistration was done by proxy (e.g. the lecturer pressed the button)
deriving Eq Ord Show Generic

View File

@ -1,5 +1,5 @@
DegreeCourse json -- for which degree programmes this course is appropriate for
course CourseId
course CourseId OnDeleteCascade OnUpdateCascade
degree StudyDegreeId
terms StudyTermsId
UniqueDegreeCourse course degree terms
@ -31,7 +31,7 @@ Course -- Information about a single course; contained info is always visible
deriving Generic
CourseEvent
type (CI Text)
course CourseId
course CourseId OnDeleteCascade OnUpdateCascade
room RoomReference Maybe
roomHidden Bool default=false
time Occurrences
@ -40,7 +40,7 @@ CourseEvent
deriving Generic
CourseAppInstructionFile
course CourseId
course CourseId OnDeleteCascade OnUpdateCascade
title FilePath
content FileContentReference Maybe
modified UTCTime
@ -50,11 +50,11 @@ CourseAppInstructionFile
CourseEdit -- who edited when a row in table "Course", kept indefinitely (might be replaced by generic Audit Table; like all ...-Edit tables)
user UserId
time UTCTime
course CourseId
course CourseId OnDeleteCascade OnUpdateCascade
deriving Generic
Lecturer -- course ownership
user UserId
course CourseId
course CourseId OnDeleteCascade OnUpdateCascade
type LecturerType default='"lecturer"'::jsonb
UniqueLecturer user course -- note: multiple lecturers per course are allowed, but no duplicated rows in this table
deriving Generic

View File

@ -13,7 +13,7 @@ CourseApplication
deriving Generic
CourseApplicationFile
application CourseApplicationId
application CourseApplicationId OnDeleteCascade OnUpdateCascade
title FilePath
content FileContentReference Maybe
modified UTCTime

View File

@ -1,12 +1,12 @@
CourseFavourite -- which user accessed which course when, only displayed to user for convenience;
user UserId
course CourseId
course CourseId OnDeleteCascade OnUpdateCascade
reason FavouriteReason
lastVisit UTCTime
UniqueCourseFavourite user course
deriving Generic
CourseNoFavourite
user UserId
course CourseId
course CourseId OnDeleteCascade OnUpdateCascade
UniqueCourseNoFavourite user course
deriving Generic

View File

@ -1,5 +1,5 @@
Material -- course material for disemination to course participants
course CourseId
course CourseId OnDeleteCascade OnUpdateCascade
name (CI Text)
type (CI Text) Maybe
description StoredMarkup Maybe
@ -8,7 +8,7 @@ Material -- course material for disemination to course participants
UniqueMaterial course name
deriving Generic
MaterialFile -- a file that is part of a material distribution
material MaterialId
material MaterialId OnDeleteCascade OnUpdateCascade
title FilePath
content FileContentReference Maybe
modified UTCTime

View File

@ -1,5 +1,5 @@
CourseNews
course CourseId
course CourseId OnDeleteCascade OnUpdateCascade
visibleFrom UTCTime Maybe
participantsOnly Bool
title Text Maybe
@ -8,7 +8,7 @@ CourseNews
lastEdit UTCTime
deriving Generic
CourseNewsFile
news CourseNewsId
news CourseNewsId OnDeleteCascade OnUpdateCascade
title FilePath
content FileContentReference Maybe
modified UTCTime

View File

@ -1,5 +1,5 @@
Sheet -- exercise sheet for a given course
course CourseId
course CourseId OnDeleteCascade OnUpdateCascade
name (CI Text)
description StoredMarkup Maybe
type (SheetType SqlBackendKey) -- ExamPartId; Does it count towards overall course grade?
@ -20,14 +20,14 @@ Sheet -- exercise sheet for a given course
SheetEdit -- who edited when a row in table "Course", kept indefinitely
user UserId
time UTCTime
sheet SheetId
sheet SheetId OnDeleteCascade OnUpdateCascade
deriving Generic
-- For anonoymous external submissions (i.e. paper submission tracked in uni2work)
-- Map pseudonyms to users injectively in the context of a single sheet; for the next sheet all-new pseudonyms need to be created
-- Chosen uniformly at random when the submitting user presses a button on the view of a sheet
SheetPseudonym
sheet SheetId
sheet SheetId OnDeleteCascade OnUpdateCascade
pseudonym Pseudonym -- 24-bit number that should be attached to external submission (i.e. written on the submitted paper); encoded as two english words akin to PGP-Wordlist
user UserId
UniqueSheetPseudonym sheet pseudonym
@ -35,13 +35,13 @@ SheetPseudonym
deriving Generic
SheetCorrector -- grant corrector role to user for a sheet
user UserId
sheet SheetId
sheet SheetId OnDeleteCascade OnUpdateCascade
load Load -- portion of work that will be assigned to this corrector
state CorrectorState default='CorrectorNormal' -- whether a corrector is assigned his load this time (e.g. in case of sickness)
UniqueSheetCorrector user sheet
deriving Show Eq Ord Generic
SheetFile -- a file that is part of an exercise sheet
sheet SheetId
sheet SheetId OnDeleteCascade OnUpdateCascade
type SheetFileType -- excercise, marking, hint or solution
title FilePath
content FileContentReference Maybe
@ -49,7 +49,7 @@ SheetFile -- a file that is part of an exercise sheet
UniqueSheetFile sheet type title
deriving Generic
PersonalisedSheetFile
sheet SheetId
sheet SheetId OnDeleteCascade OnUpdateCascade
user UserId
type SheetFileType
title FilePath
@ -59,7 +59,7 @@ PersonalisedSheetFile
deriving Eq Ord Read Show Typeable Generic
FallbackPersonalisedSheetFilesKey
course CourseId
course CourseId OnDeleteCascade OnUpdateCascade
index Word24
secret ByteString
generated UTCTime

View File

@ -9,10 +9,10 @@ Submission -- submission for marking by a CourseParticipa
SubmissionEdit -- user uploads new version of their submission
user UserId Maybe -- track id, important for group submissions
time UTCTime
submission SubmissionId
submission SubmissionId OnDeleteCascade OnUpdateCascade
deriving Generic
SubmissionFile json -- files that are part of a submission
submission SubmissionId
submission SubmissionId OnDeleteCascade OnUpdateCascade
title FilePath
content FileContentReference Maybe
modified UTCTime
@ -22,11 +22,11 @@ SubmissionFile json -- files that are part of a submission
deriving Eq Ord Read Show Generic
SubmissionUser -- which submission belongs to whom
user UserId
submission SubmissionId
submission SubmissionId OnDeleteCascade OnUpdateCascade
UniqueSubmissionUser user submission -- multiple users may share same submission, in case of (ad-hoc) submission groups
deriving Generic
SubmissionGroup -- pre-defined submission groups; some courses only allow pre-defined submission groups
course CourseId
course CourseId OnDeleteCascade OnUpdateCascade
name SubmissionGroupName
UniqueSubmissionGroup course name
deriving Generic

View File

@ -16,7 +16,7 @@ SystemMessage
deriving Generic
SystemMessageTranslation -- Translation of a @SystemMessage@ into another language; which language to choose is determined by user-sent HTTP-headers
message SystemMessageId
message SystemMessageId OnDeleteCascade OnUpdateCascade
language Lang
content StoredMarkup
summary StoredMarkup Maybe
@ -24,7 +24,7 @@ SystemMessageTranslation -- Translation of a @SystemMessage@ into another langua
deriving Generic
SystemMessageHidden
message SystemMessageId
message SystemMessageId OnDeleteCascade OnUpdateCascade
user UserId
time UTCTime
UniqueSystemMessageHidden user message

View File

@ -1,6 +1,6 @@
Tutorial json
name TutorialName
course CourseId
course CourseId OnDeleteCascade OnUpdateCascade
type (CI Text) -- "Tutorium", "Zentralübung", ...
capacity Int Maybe -- limit for enrolment in this tutorial
room RoomReference Maybe
@ -15,12 +15,12 @@ Tutorial json
UniqueTutorial course name
deriving Generic
Tutor
tutorial TutorialId
tutorial TutorialId OnDeleteCascade OnUpdateCascade
user UserId
UniqueTutor tutorial user
deriving Generic
TutorialParticipant
tutorial TutorialId
tutorial TutorialId OnDeleteCascade OnUpdateCascade
user UserId
UniqueTutorialParticipant tutorial user
deriving Eq Ord Show

View File

@ -13,7 +13,7 @@ WorkflowDefinition
deriving Generic
WorkflowDefinitionDescription
definition WorkflowDefinitionId
definition WorkflowDefinitionId OnDeleteCascade OnUpdateCascade
language Lang
title Text
description StoredMarkup Maybe
@ -21,7 +21,7 @@ WorkflowDefinitionDescription
deriving Generic
WorkflowDefinitionInstanceDescription
definition WorkflowDefinitionId
definition WorkflowDefinitionId OnDeleteCascade OnUpdateCascade
language Lang
title Text
description StoredMarkup Maybe
@ -29,7 +29,7 @@ WorkflowDefinitionInstanceDescription
deriving Generic
WorkflowInstance
definition WorkflowDefinitionId Maybe
definition WorkflowDefinitionId Maybe OnDeleteSetNull OnUpdateCascade
graph SharedWorkflowGraphId
scope (WorkflowScope TermIdentifier SchoolShorthand SqlBackendKey) -- TermId, SchoolId, CourseId
name WorkflowInstanceName

View File

@ -17,9 +17,10 @@ module Application
) where
import Control.Monad.Logger (liftLoc, LoggingT(..), MonadLoggerIO(..))
import Database.Persist.Postgresql ( openSimpleConn, pgConnStr, connClose, pgPoolIdleTimeout
import Database.Persist.Postgresql ( openSimpleConn, pgConnStr, pgPoolIdleTimeout
, pgPoolSize
)
import Database.Persist.SqlBackend.Internal ( connClose )
import qualified Database.PostgreSQL.Simple as PG
import Import hiding (cancel, respond)
import Language.Haskell.TH.Syntax (qLocation)

View File

@ -23,7 +23,8 @@ import qualified Data.ByteString as BS
instance RandomGen ChaChaDRG where
next g = withRandomBytes g (finiteBitSize (maxBound :: Int) `div` 8) (foldr (\x acc -> acc `shiftL` 8 .|. fromIntegral x) zeroBits . BA.unpack @BA.Bytes)
genWord64 g = withRandomBytes g (finiteBitSize (maxBound :: Word64) `div` 8) (foldr (\x acc -> acc `shiftL` 8 .|. fromIntegral x) zeroBits . BA.unpack @BA.Bytes)
genWord32 g = withRandomBytes g (finiteBitSize (maxBound :: Word32) `div` 8) (foldr (\x acc -> acc `shiftL` 8 .|. fromIntegral x) zeroBits . BA.unpack @BA.Bytes)
split g = withDRG g drgNew
instance Binary Seed where

View File

@ -22,7 +22,7 @@ import Language.Haskell.TH.Syntax (Lift(..))
import Data.Aeson (ToJSONKey(..), FromJSONKey(..), ToJSONKeyFunction(..))
import qualified Database.Esqueleto as E
import qualified Database.Esqueleto.Legacy as E
import Web.HttpApiData

View File

@ -6,7 +6,7 @@ module Database.Esqueleto.Instances
import ClassyPrelude.Yesod
import qualified Database.Esqueleto as E
import qualified Database.Esqueleto.Legacy as E
import Data.Binary (Binary)
import qualified Data.Binary as B

View File

@ -43,7 +43,7 @@ import Data.Universe
import qualified Data.Set as Set
import qualified Data.List as List
import qualified Data.Foldable as F
import qualified Database.Esqueleto as E
import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.PostgreSQL as E
import qualified Database.Esqueleto.Internal.Internal as E
import Database.Esqueleto.Utils.TH
@ -126,40 +126,24 @@ substring :: ( E.SqlString str
-> E.SqlExpr (E.Value from)
-> E.SqlExpr (E.Value for)
-> E.SqlExpr (E.Value str)
substring (E.ERaw p1 f1) (E.ERaw p2 f2) (E.ERaw p3 f3)
= E.ERaw E.Never $ \info ->
let (strTLB, strVals) = f1 info
(fromiTLB, fromiVals) = f2 info
(foriTLB, foriVals) = f3 info
in ( "SUBSTRING" <> E.parens (E.parensM p1 strTLB <> " FROM " <> E.parensM p2 fromiTLB <> " FOR " <> E.parensM p3 foriTLB)
substring (E.ERaw _m1 f1) (E.ERaw _m2 f2) (E.ERaw _m3 f3)
= E.ERaw E.noMeta $ \_nParens info ->
let (strTLB, strVals) = f1 E.Parens info
(fromiTLB, fromiVals) = f2 E.Parens info
(foriTLB, foriVals) = f3 E.Parens info
in ( "SUBSTRING" <> E.parens (E.parens strTLB <> " FROM " <> E.parens fromiTLB <> " FOR " <> E.parens foriTLB)
, strVals <> fromiVals <> foriVals
)
substring a b c = substring (construct a) (construct b) (construct c)
explicitUnsafeCoerceSqlExprValue :: forall b a.
Text
-> E.SqlExpr (E.Value a)
-> E.SqlExpr (E.Value b)
explicitUnsafeCoerceSqlExprValue typ (E.ERaw p1 f1) = E.ERaw E.Parens $ \info ->
let (valTLB, valVals) = f1 info
in ( E.parensM p1 valTLB <> " :: " <> Text.Builder.fromText typ
explicitUnsafeCoerceSqlExprValue typ (E.ERaw _m1 f1) = E.ERaw E.noMeta $ \_nParens info ->
let (valTLB, valVals) = f1 E.Parens info
in ( E.parens valTLB <> " :: " <> Text.Builder.fromText typ
, valVals
)
explicitUnsafeCoerceSqlExprValue typ val = explicitUnsafeCoerceSqlExprValue typ $ construct val
construct :: E.SqlExpr (E.Value a) -> E.SqlExpr (E.Value a)
construct (E.ERaw p f) = E.ERaw E.Parens $ \info ->
let (b1, vals) = f info
build ("?", [E.PersistList vals']) =
(E.uncommas $ replicate (length vals') "?", vals')
build expr = expr
in build (E.parensM p b1, vals)
construct (E.ECompositeKey f) =
E.ERaw E.Parens $ \info -> (E.uncommas $ f info, mempty)
construct (E.EAliasedValue i _) =
E.ERaw E.Never $ E.aliasedValueIdentToRawSql i
construct (E.EValueReference i i') =
E.ERaw E.Never $ E.valueReferenceToRawSql i i'
and, or :: Foldable f => f (E.SqlExpr (E.Value Bool)) -> E.SqlExpr (E.Value Bool)
and = F.foldr (E.&&.) true
@ -485,12 +469,11 @@ diffTimes :: E.SqlExpr (E.Value UTCTime) -> E.SqlExpr (E.Value UTCTime) -> E.Sql
diffTimes a b = unsafeExtract "EPOCH" $ a E.-. b
unsafeExtract :: String -> E.SqlExpr (E.Value a) -> E.SqlExpr (E.Value b)
unsafeExtract extr (E.ERaw vP vF) = E.ERaw E.Never $ \info ->
let (vTLB, vVals) = vF info
in ( "EXTRACT" <> E.parens (fromString extr <> " FROM " <> E.parensM vP vTLB)
unsafeExtract extr (E.ERaw _mF vF) = E.ERaw E.noMeta $ \_nParens info ->
let (vTLB, vVals) = vF E.Parens info
in ( "EXTRACT" <> E.parens (fromString extr <> " FROM " <> E.parens vTLB)
, vVals
)
unsafeExtract extr v = unsafeExtract extr $ construct v
class ExprLift e a | e -> a where

View File

@ -9,7 +9,7 @@ module Database.Esqueleto.Utils.TH
import ClassyPrelude
import qualified Database.Esqueleto as E
import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Internal.Internal as E (SqlSelect)
import Database.Persist (PersistField)

View File

@ -31,8 +31,8 @@ instance PersistEntity record => Binary (Key record) where
get = either (fail . unpack) return . fromPersistValue =<< Binary.get
uniqueToMap :: PersistEntity record => Unique record -> Map (HaskellName, DBName) PersistValue
uniqueToMap = fmap Map.fromList $ zip <$> persistUniqueToFieldNames <*> persistUniqueToValues
uniqueToMap :: PersistEntity record => Unique record -> Map (FieldNameHS, FieldNameDB) PersistValue
uniqueToMap = fmap Map.fromList $ zip <$> fmap toList persistUniqueToFieldNames <*> persistUniqueToValues
instance PersistEntity record => Eq (Unique record) where
(==) = (==) `on` uniqueToMap

View File

@ -17,6 +17,14 @@ import Data.Binary.Instances.Time as Import ()
import Data.Binary (Binary)
deriving instance Generic LiteralType
deriving instance Typeable LiteralType
instance Hashable LiteralType
instance Binary LiteralType
instance NFData LiteralType
deriving instance Generic PersistValue
deriving instance Typeable PersistValue

View File

@ -48,7 +48,7 @@ import qualified Data.Text as Text
import Data.List (findIndex, inits)
import Data.Semigroup (Last(..))
import qualified Database.Esqueleto as E
import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Utils as E
import Control.Monad.Error.Class (MonadError(..))

View File

@ -48,7 +48,7 @@ import qualified Data.Binary as Binary
import qualified Data.CaseInsensitive as CI
import qualified Database.Esqueleto as E
import qualified Database.Esqueleto.Legacy as E
-- Please see the documentation for the Yesod typeclass. There are a number

View File

@ -30,7 +30,7 @@ import Handler.Utils.ExamOffice.Course
import Utils.Sheet
import qualified Data.CaseInsensitive as CI
import qualified Database.Esqueleto as E
import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Utils as E
import Control.Monad.Trans.State (execStateT)

View File

@ -30,7 +30,7 @@ import qualified Data.Text as Text
import qualified Data.Set as Set
import qualified Data.HashMap.Strict as HashMap
import qualified Database.Esqueleto as E
import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Utils as E
import qualified Data.Conduit.Combinators as C

View File

@ -39,7 +39,7 @@ import Data.ByteArray (convert)
import Crypto.Hash (SHAKE128)
import qualified Data.Binary as Binary
import qualified Database.Esqueleto as E
import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Utils as E
import Crypto.Hash.Conduit (sinkHash)

View File

@ -14,6 +14,7 @@ import Foundation.Authorization
import Database.Persist.Sql (transactionUndo)
import qualified Database.Persist.Sql as SQL
import qualified Database.Persist.SqlBackend.Internal as SQL
import qualified Utils.Pool as Custom

View File

@ -12,7 +12,7 @@ import qualified Data.Text as Text
import qualified Data.Set as Set
import qualified Data.Map as Map
import qualified Database.Esqueleto as E
import qualified Database.Esqueleto.Legacy as E
import Database.Esqueleto.Utils (mkExactFilter, mkContainsFilter)
import qualified Handler.Utils.TermCandidates as Candidates

View File

@ -18,7 +18,7 @@ import Data.Binary.Builder (Builder)
import Control.Monad.Random.Lazy (evalRandT, liftRandT)
import qualified Database.Esqueleto as E hiding (random_)
import qualified Database.Esqueleto.Legacy as E hiding (random_)
import qualified Database.Esqueleto.PostgreSQL as E

View File

@ -16,7 +16,7 @@ import Data.Map ((!), (!?))
import qualified Data.Text as Text
import qualified Database.Esqueleto as E hiding (random_)
import qualified Database.Esqueleto.Legacy as E hiding (random_)
import qualified Database.Esqueleto.PostgreSQL as E
import qualified Data.Conduit.Combinators as C

View File

@ -13,7 +13,7 @@ import Data.Map ((!?))
import qualified Data.Map as Map
import qualified Data.Set as Set
import qualified Database.Esqueleto as E
import qualified Database.Esqueleto.Legacy as E
import qualified Control.Monad.State.Class as State
import Data.Sequence (Seq((:|>)))

View File

@ -14,7 +14,7 @@ import Handler.Utils
import qualified Data.Text as Text
import qualified Data.Set as Set
import qualified Database.Esqueleto as E
import qualified Database.Esqueleto.Legacy as E
import qualified Data.Conduit.List as C
@ -348,7 +348,7 @@ editApplicationR maId uid cid mAppId afMode allowAction postAction = do
, allowAction afAction
, Just appId <- mAppId
-> runDB $ do
deleteCascade appId
delete appId
audit $ TransactionCourseApplicationDeleted cid uid appId
addMessageI Success $ MsgCourseApplicationDeleted courseShorthand
| otherwise

View File

@ -12,7 +12,7 @@ import Handler.Allocation.Accept (SessionDataAllocationResults(..))
import qualified Data.Set as Set
import qualified Data.Map as Map
import qualified Database.Esqueleto as E
import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Utils as E
import qualified Control.Monad.State.Class as State

View File

@ -16,7 +16,7 @@ import qualified Data.Conduit.Combinators as C
import Handler.Utils.Delete
import qualified Database.Esqueleto as E
import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Utils as E
import Handler.Course.Register (deregisterParticipant)

View File

@ -7,7 +7,7 @@ import Import
import Handler.Utils
import qualified Database.Esqueleto as E
import qualified Database.Esqueleto.Legacy as E
import qualified Data.Map.Strict as Map
import qualified Data.Set as Set

View File

@ -8,7 +8,7 @@ import Import
import Utils.Course (mayViewCourse)
import qualified Database.Esqueleto as E
import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Utils as E
import Handler.Utils.Table.Columns
import Handler.Utils.Table.Pagination

View File

@ -8,7 +8,7 @@ import Handler.Utils
import Handler.Utils.Csv
import Handler.Utils.Allocation
import qualified Database.Esqueleto as E
import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Utils as E
import qualified Data.Conduit.List as C

View File

@ -12,7 +12,7 @@ import Handler.Utils.Allocation (allocationNotifyNewCourses)
import Handler.Allocation.Register
import Handler.Allocation.Application
import qualified Database.Esqueleto as E
import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Utils as E

View File

@ -12,7 +12,7 @@ import Handler.Allocation.Application
import Handler.Utils
import qualified Database.Esqueleto as E
import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Utils as E
import qualified Database.Esqueleto.PostgreSQL as E
import qualified Data.Map.Strict as Map

View File

@ -12,7 +12,7 @@ import Handler.Utils
import Handler.Utils.Allocation
import Handler.Utils.StudyFeatures
import qualified Database.Esqueleto as E
import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Utils as E
import qualified Data.Csv as Csv

View File

@ -4,7 +4,7 @@ module Handler.Course
import Import
import qualified Database.Esqueleto as E
import qualified Database.Esqueleto.Legacy as E
import qualified Database.Persist as P
import Handler.Course.Communication as Handler.Course

View File

@ -10,7 +10,7 @@ import Handler.Utils
import qualified Data.Conduit.List as C
import qualified Database.Esqueleto as E
import qualified Database.Esqueleto.Legacy as E
import qualified Data.CaseInsensitive as CI

View File

@ -9,7 +9,7 @@ import Import
import Handler.Utils
import qualified Database.Esqueleto as E
import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Utils as E
import Database.Esqueleto.Utils.TH

View File

@ -9,7 +9,7 @@ import Handler.Utils.Communication
import qualified Data.Map as Map
import qualified Database.Esqueleto as E
import qualified Database.Esqueleto.Legacy as E
getCCommR, postCCommR :: TermId -> SchoolId -> CourseShorthand -> Handler Html

View File

@ -18,7 +18,7 @@ import qualified Data.Map as Map
import qualified Control.Monad.State.Class as State
import qualified Database.Esqueleto as E
import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Utils as E
import Jobs.Queue

View File

@ -8,7 +8,7 @@ import Import
import Handler.Utils
import Handler.Utils.Form.Occurrences
import qualified Database.Esqueleto as E
import qualified Database.Esqueleto.Legacy as E
data CourseEventForm = CourseEventForm

View File

@ -17,7 +17,7 @@ import Utils.Form
-- import Utils.DB
import Handler.Utils hiding (colSchoolShort)
import qualified Database.Esqueleto as E
import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Utils as E
import qualified Data.CaseInsensitive as CI

View File

@ -6,7 +6,7 @@ module Handler.Course.News.Download
import Import
import Handler.Utils
import qualified Database.Esqueleto as E
import qualified Database.Esqueleto.Legacy as E
import qualified Data.Conduit.List as C

View File

@ -18,7 +18,7 @@ import qualified Data.Text as Text
import qualified Data.Conduit.List as C
import Database.Persist.Sql (transactionUndo)
import qualified Database.Esqueleto as E
import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Utils as E

View File

@ -15,7 +15,7 @@ import qualified Data.CaseInsensitive as CI
import qualified Data.Map as Map
import qualified Database.Esqueleto as E
import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Utils as E
import Database.Esqueleto.Utils.TH

View File

@ -9,7 +9,7 @@ import Handler.Utils
import Handler.Utils.SheetType
import Database.Esqueleto.Utils.TH
import qualified Database.Esqueleto as E
import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Utils as E
import Database.Persist.Sql (deleteWhereCount)

View File

@ -23,7 +23,7 @@ import qualified Data.Map as Map
import qualified Data.Text as Text
import qualified Data.Vector as Vector
import qualified Database.Esqueleto as E
import qualified Database.Esqueleto.Legacy as E
import qualified Data.Csv as Csv

View File

@ -12,7 +12,7 @@ import Handler.Utils.Exam
import qualified Data.Map as Map
import qualified Data.Set as Set
import qualified Database.Esqueleto as E
import qualified Database.Esqueleto.Legacy as E
import Database.Persist.Sql (updateWhereCount)
newtype ExamAutoOccurrenceCalculateForm = ExamAutoOccurrenceCalculateForm

View File

@ -7,7 +7,7 @@ import Import
import qualified Data.Set as Set
import qualified Data.CaseInsensitive as CI
import qualified Database.Esqueleto as E
import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Utils as E
import Database.Persist.Sql (transactionUndo)

View File

@ -14,7 +14,7 @@ import Handler.Utils.Invitations
import Jobs.Queue
import qualified Database.Esqueleto as E
import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Utils as E

View File

@ -18,7 +18,7 @@ import Data.Map ((!))
import qualified Data.Map as Map
import qualified Data.Set as Set
import qualified Database.Esqueleto as E
import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Utils as E
import qualified Control.Monad.State.Class as State

View File

@ -9,7 +9,7 @@ import Handler.Utils
import qualified Data.Map as Map
import qualified Database.Esqueleto as E
import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Utils as E

View File

@ -12,7 +12,7 @@ import Handler.ExamOffice.Exam (examCloseWidget, examFinishWidget)
import Data.Map ((!?))
import qualified Data.Map as Map
import qualified Database.Esqueleto as E
import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Utils as E
import qualified Data.CaseInsensitive as CI

View File

@ -16,7 +16,7 @@ import Handler.Exam.AutoOccurrence (examAutoOccurrenceCalculateWidget)
import Handler.ExamOffice.Exam (examCloseWidget, examFinishWidget)
import qualified Database.Esqueleto as E
import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Utils as E
import Database.Esqueleto.Utils.TH

View File

@ -6,7 +6,7 @@ import Import
import qualified Data.Set as Set
import qualified Database.Esqueleto as E
import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Utils as E
import Handler.Utils.ExamOffice.Course

View File

@ -11,7 +11,7 @@ import Handler.Utils.Exam
import Handler.Utils.Csv
import qualified Handler.Utils.ExamOffice.Exam as Exam
import qualified Database.Esqueleto as E
import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Utils as E
import qualified Data.Csv as Csv

View File

@ -10,7 +10,7 @@ import Handler.Utils
import qualified Handler.Utils.ExamOffice.Exam as Exam
import qualified Handler.Utils.ExamOffice.ExternalExam as ExternalExam
import qualified Database.Esqueleto as E
import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Utils as E
import qualified Colonnade

View File

@ -6,7 +6,7 @@ module Handler.ExamOffice.Fields
import Import
import Utils.Form
import qualified Database.Esqueleto as E
import qualified Database.Esqueleto.Legacy as E
import qualified Data.Set as Set
import qualified Data.Map as Map

View File

@ -13,7 +13,7 @@ import Handler.Utils.Invitations
import Data.Aeson hiding (Result(..))
import Jobs.Queue
import qualified Database.Esqueleto as E
import qualified Database.Esqueleto.Legacy as E
import qualified Data.Set as Set
import qualified Data.Map as Map

View File

@ -7,7 +7,7 @@ import Import
import qualified Data.Set as Set
import qualified Data.List.NonEmpty as NonEmpty (toList)
import qualified Database.Esqueleto as E
import qualified Database.Esqueleto.Legacy as E
--import qualified Database.Esqueleto.Utils as E
import Database.Persist.Sql (transactionUndo)

View File

@ -13,7 +13,7 @@ import Data.Map ((!))
import qualified Control.Monad.State.Class as State
import qualified Database.Esqueleto as E
import qualified Database.Esqueleto.Legacy as E
data ExternalExamForm = ExternalExamForm

View File

@ -6,7 +6,7 @@ import Import
import Handler.Utils
import qualified Database.Esqueleto as E
import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Utils as E
import qualified Data.Map as Map

View File

@ -11,7 +11,7 @@ import Handler.ExternalExam.StaffInvite ()
import qualified Data.CaseInsensitive as CI
import qualified Data.Map as Map
import qualified Database.Esqueleto as E
import qualified Database.Esqueleto.Legacy as E
getEEShowR :: TermId -> SchoolId -> CourseName -> ExamName -> Handler Html

View File

@ -9,7 +9,7 @@ import Data.Map ((!))
import qualified Data.CaseInsensitive as CI
import qualified Data.Set as Set
import qualified Database.Esqueleto as E
import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Utils as E
import Development.GitRev

View File

@ -17,7 +17,7 @@ import qualified Data.Conduit.List as C
import qualified Data.CaseInsensitive as CI
-- import qualified Data.Text.Encoding as Text
import qualified Database.Esqueleto as E
import qualified Database.Esqueleto.Legacy as E
import Utils.Form
import Handler.Utils

View File

@ -11,7 +11,7 @@ import qualified Data.Map.Strict as Map
import qualified Data.Set as Set
import Database.Esqueleto.Utils.TH
import qualified Database.Esqueleto as E
import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Utils as E
import qualified Data.Conduit.List as C (consume, mapMaybeM)

View File

@ -8,7 +8,7 @@ module Handler.Participants
import Import
import Handler.Utils
import qualified Database.Esqueleto as E
import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Utils as E
import qualified Data.Map as Map

View File

@ -18,7 +18,7 @@ import Handler.Utils.Profile
import Data.Map ((!))
import qualified Data.Map as Map
import qualified Data.Set as Set
import qualified Database.Esqueleto as E
import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Utils as E
-- import Database.Esqueleto ((^.))
import qualified Data.Text as Text

View File

@ -3,7 +3,7 @@ module Handler.School where
import Import
import Handler.Utils
import qualified Database.Esqueleto as E
import qualified Database.Esqueleto.Legacy as E
import qualified Data.Set as Set
import qualified Data.CaseInsensitive as CI

View File

@ -7,7 +7,7 @@ import Import
import Handler.Utils.Delete
import Handler.Utils.Sheet
import qualified Database.Esqueleto as E
import qualified Database.Esqueleto.Legacy as E
import qualified Data.Set as Set

View File

@ -9,7 +9,7 @@ import Handler.Utils
import qualified Data.Conduit.Combinators as C
import qualified Database.Esqueleto as E
import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Utils as E

View File

@ -9,7 +9,7 @@ import Import
import Handler.Utils
import Handler.Utils.Invitations
import qualified Database.Esqueleto as E
import qualified Database.Esqueleto.Legacy as E
import qualified Data.Set as Set
import qualified Data.Map as Map

View File

@ -8,7 +8,7 @@ import Utils.Sheet
import Handler.Utils
import Handler.Utils.SheetType
import qualified Database.Esqueleto as E
import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Utils as E
import qualified Data.Map as Map

View File

@ -6,7 +6,7 @@ import Import
import Handler.Utils
import qualified Database.Esqueleto as E
import qualified Database.Esqueleto.Legacy as E
import qualified Data.Map as Map

View File

@ -32,7 +32,7 @@ import Language.Haskell.TH (nameBase)
import qualified Data.CryptoID.ByteString as CryptoID
import qualified Data.CryptoID.Class.ImplicitNamespace as I
import qualified Database.Esqueleto as E
import qualified Database.Esqueleto.Legacy as E
import qualified Data.Map as Map
import qualified Data.Set as Set

View File

@ -18,7 +18,7 @@ import qualified Data.YAML.Token as YAML (Encoding(..))
import Control.Monad.Trans.State.Lazy (evalState)
import qualified Database.Esqueleto as E
import qualified Database.Esqueleto.Legacy as E
import qualified Data.CaseInsensitive as CI

View File

@ -6,7 +6,7 @@ import Import hiding (link)
import Handler.Utils
import qualified Database.Esqueleto as E
import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Utils as E
import qualified Data.Map as Map

View File

@ -30,7 +30,7 @@ import Handler.Utils
import Import
import qualified Database.Esqueleto as E
import qualified Database.Esqueleto.Legacy as E
getSubmissionOwnR :: TermId -> SchoolId -> CourseShorthand -> SheetName -> Handler Html

View File

@ -18,7 +18,7 @@ import qualified Data.Map.Strict as Map
import qualified Data.Text as Text
import qualified Data.CaseInsensitive as CI
import qualified Database.Esqueleto as E
import qualified Database.Esqueleto.Legacy as E
import Data.List.NonEmpty (unzip)

View File

@ -14,7 +14,7 @@ import qualified Data.Text as Text
import qualified Control.Monad.State.Class as State
import qualified Database.Esqueleto as E
import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Utils as E

View File

@ -16,7 +16,7 @@ import qualified Data.Text as Text
import qualified Control.Monad.State.Class as State
import qualified Database.Esqueleto as E
import qualified Database.Esqueleto.Legacy as E
import Data.List (genericLength)

View File

@ -11,7 +11,7 @@ import Handler.Utils.Submission
import qualified Data.Set as Set
import qualified Database.Esqueleto as E
import qualified Database.Esqueleto.Legacy as E
import qualified Data.Conduit.Combinators as Conduit

View File

@ -14,7 +14,7 @@ import Handler.Utils.Invitations
import Data.Maybe (fromJust)
import qualified Database.Esqueleto as E
import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Utils as E
import qualified Database.Esqueleto.Internal.Internal as E (unsafeSqlFunction)

View File

@ -26,7 +26,7 @@ import qualified Data.Text as Text
import qualified Data.CaseInsensitive as CI
import Database.Esqueleto.Utils.TH
import qualified Database.Esqueleto as E
import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Utils as E
import qualified Database.Esqueleto.Internal.Internal as IE (From)

View File

@ -17,7 +17,7 @@ import qualified Data.List.NonEmpty as NonEmpty
import Handler.Utils
import Handler.Utils.News
import qualified Database.Esqueleto as E
import qualified Database.Esqueleto.Legacy as E
-- htmlField' moved to Handler.Utils.Form/Fields
@ -257,7 +257,7 @@ postMessageListR = do
FormSuccess (SMDDelete, selection)
| not $ null selection -> do
selection' <- traverse decrypt $ Set.toList selection
runDB $ deleteCascadeWhere [ SystemMessageId <-. selection' ]
runDB $ deleteWhere [ SystemMessageId <-. selection' ]
$(addMessageFile Success "templates/messages/systemMessagesDeleted.hamlet")
redirect MessageListR
FormSuccess (SMDActivate ts, selection)

View File

@ -13,7 +13,7 @@ import Handler.Utils
import qualified Data.Map.Strict as Map
import Data.Map.Strict ((!))
import qualified Database.Esqueleto as E
import qualified Database.Esqueleto.Legacy as E
import qualified Data.Set as Set

View File

@ -7,7 +7,7 @@ import Handler.Utils
import Handler.Utils.Tutorial
import Handler.Utils.Communication
import qualified Database.Esqueleto as E
import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Utils as E
import qualified Data.Map as Map

View File

@ -7,7 +7,7 @@ import Handler.Utils
import Handler.Utils.Tutorial
import Handler.Utils.Delete
import qualified Database.Esqueleto as E
import qualified Database.Esqueleto.Legacy as E
import qualified Data.Set as Set

View File

@ -8,7 +8,7 @@ import Handler.Utils.Tutorial
import Handler.Utils.Invitations
import Jobs.Queue
import qualified Database.Esqueleto as E
import qualified Database.Esqueleto.Legacy as E
import qualified Data.Map as Map
import qualified Data.Set as Set

View File

@ -7,7 +7,7 @@ import Import
import Handler.Utils
import Handler.Utils.Form.Occurrences
import qualified Database.Esqueleto as E
import qualified Database.Esqueleto.Legacy as E
import Data.Map ((!))
import qualified Data.Set as Set

View File

@ -6,7 +6,7 @@ import Import
import Handler.Utils
import Handler.Utils.Tutorial
import qualified Database.Esqueleto as E
import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Utils as E
import Database.Esqueleto.Utils.TH

View File

@ -15,7 +15,7 @@ import qualified Data.CaseInsensitive as CI
import qualified Data.Set as Set
import qualified Data.Map as Map
import qualified Database.Esqueleto as E
import qualified Database.Esqueleto.Legacy as E
import Handler.Course.Users

View File

@ -19,7 +19,7 @@ import qualified Data.CaseInsensitive as CI
import qualified Data.Set as Set
import qualified Data.Map as Map
import qualified Database.Esqueleto as E
import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Utils as E
import Handler.Profile (makeProfileData)
@ -503,9 +503,9 @@ deleteUser duid = do
groupSubmissions <- selectSubmissionsWhere (\numBuddies -> numBuddies E.>. E.val (0::Int64))
singleSubmissions <- selectSubmissionsWhere (\numBuddies -> numBuddies E.==. E.val (0::Int64))
deleteCascade duid
delete duid -- cascade is now defined in models files; therefor does not cascade at all currently (2021-06-27); not even SubmissionUser...
forM_ singleSubmissions $ \(E.Value submissionId) -> do
deleteCascade submissionId
delete submissionId -- ditto
deletedSubmissionGroups <- deleteSingleSubmissionGroups
return ((length singleSubmissions, length groupSubmissions),deletedSubmissionGroups)

View File

@ -13,7 +13,7 @@ import Import
import qualified Data.Map.Strict as Map
import qualified Database.Esqueleto as E
import qualified Database.Esqueleto.Legacy as E
import qualified Database.Esqueleto.Utils as E
import Control.Monad.Trans.State (execStateT)

Some files were not shown because too many files have changed in this diff Show More