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 , transactionUser :: UserId
} }
-- TODO: not yet audited
| TransactionSubmissionFileEdit | TransactionSubmissionFileEdit
{ transactionSubmissionFile :: SubmissionFileId { transactionSubmissionFile :: SubmissionFileId
, transactionSubmission :: SubmissionId , transactionSubmission :: SubmissionId

View File

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