chore(audit): audit submission file edits and deletes

This commit is contained in:
Sarah Vaupel 2019-09-04 15:58:12 +02:00
parent 537e66e487
commit f462d44c49
2 changed files with 11 additions and 8 deletions

View File

@ -71,7 +71,6 @@ data Transaction
, transactionUser :: UserId
}
-- TODO: not yet audited
| TransactionSubmissionFileEdit
{ transactionSubmissionFile :: SubmissionFileId
, transactionSubmission :: SubmissionId

View File

@ -404,6 +404,7 @@ sinkSubmission userId mExists isUpdate = do
submissionRatingTime = Nothing
sId <- insert Submission{..}
audit $ TransactionSubmissionEdit sId sheetId
-- now <- liftIO getCurrentTime
-- insert $ SubmissionEdit userId now sId -- This is done automatically during 'sinkSubmission'' iff the given submission is nonempty
return sId
@ -472,15 +473,17 @@ sinkSubmission userId mExists isUpdate = do
-> return ()
_ -> do
fileId <- insert file
insert_ $ SubmissionFile
subFileId <- insert $ SubmissionFile
{ submissionFileSubmission = submissionId
, submissionFileFile = fileId
, submissionFileIsUpdate = isUpdate
, submissionFileIsDeletion = False
}
audit $ TransactionSubmissionFileEdit subFileId submissionId fileId
when undoneDeletion $ do
touchSubmission
lift $ deleteWhere [ SubmissionFileId <-. [ sfId | (_, Entity sfId sf) <- collidingFiles, submissionFileIsDeletion sf ] ]
-- audit $ TransactionSubmissionFileDelete sfId submissionId fId -- TODO: get sfId, fId
Right (submissionId', r) -> do
$logDebugS "sinkSubmission" $ tshow submissionId'
@ -531,6 +534,7 @@ sinkSubmission userId mExists isUpdate = do
when (submissionRatingDone submission' && not (submissionRatingDone submission)) $
tellSt mempty { sinkSubmissionNotifyRating = Any True }
lift $ replace submissionId submission'
-- audit $ TransactionSubmissionEdit submissionId sheetId -- TODO: get sheetId
where
a /~ b = not $ a ~~ b
@ -587,24 +591,24 @@ sinkSubmission userId mExists isUpdate = do
case (shadowing, submissionFileIsUpdate) of
([], _) -> deleteCascade fileId
(E.Value f:_, False) -> do
insert_ $ SubmissionFile
sfId' <- insert $ SubmissionFile
{ submissionFileSubmission = submissionId
, submissionFileFile = f
, submissionFileIsUpdate = True
, submissionFileIsDeletion = True
}
audit $ TransactionSubmissionFileEdit sfId' submissionId f
(E.Value f:_, True) -> do
update sfId [ SubmissionFileFile =. f, SubmissionFileIsDeletion =. True ]
deleteCascade fileId
audit $ TransactionSubmissionFileDelete sfId submissionId f
if
| isUpdate
, isn't (_Wrapped . _Just) sinkSeenRating
-> update submissionId
[ SubmissionRatingTime =. Nothing
, SubmissionRatingPoints =. Nothing
, SubmissionRatingComment =. Nothing
]
-> do
update submissionId [ SubmissionRatingTime =. Nothing, SubmissionRatingPoints =. Nothing, SubmissionRatingComment =. Nothing]
-- audit $ TransactionSubmissionEdit submissionId sheetId -- TODO: get sheetId
| isUpdate
, getAny sinkSubmissionNotifyRating
-> queueDBJob . JobQueueNotification $ NotificationSubmissionRated submissionId