chore(audit): proper audit for editing submissions
This commit is contained in:
parent
696ebd889a
commit
24b97ef28e
@ -14,6 +14,7 @@ data Transaction
|
|||||||
= TransactionTermEdit
|
= TransactionTermEdit
|
||||||
{ transactionTerm :: TermId
|
{ transactionTerm :: TermId
|
||||||
}
|
}
|
||||||
|
|
||||||
| TransactionExamRegister
|
| TransactionExamRegister
|
||||||
{ transactionExam :: ExamId
|
{ transactionExam :: ExamId
|
||||||
, transactionUser :: UserId
|
, transactionUser :: UserId
|
||||||
@ -22,6 +23,7 @@ data Transaction
|
|||||||
{ transactionExam :: ExamId
|
{ transactionExam :: ExamId
|
||||||
, transactionUser :: UserId
|
, transactionUser :: UserId
|
||||||
}
|
}
|
||||||
|
|
||||||
| TransactionExamResultEdit
|
| TransactionExamResultEdit
|
||||||
{ transactionExam :: ExamId
|
{ transactionExam :: ExamId
|
||||||
, transactionUser :: UserId
|
, transactionUser :: UserId
|
||||||
@ -30,6 +32,7 @@ data Transaction
|
|||||||
{ transactionExam :: ExamId
|
{ transactionExam :: ExamId
|
||||||
, transactionUser :: UserId
|
, transactionUser :: UserId
|
||||||
}
|
}
|
||||||
|
|
||||||
| TransactionCourseParticipantEdit
|
| TransactionCourseParticipantEdit
|
||||||
{ transactionCourse :: CourseId
|
{ transactionCourse :: CourseId
|
||||||
, transactionUser :: UserId
|
, transactionUser :: UserId
|
||||||
@ -38,6 +41,7 @@ data Transaction
|
|||||||
{ transactionCourse :: CourseId
|
{ transactionCourse :: CourseId
|
||||||
, transactionUser :: UserId
|
, transactionUser :: UserId
|
||||||
}
|
}
|
||||||
|
|
||||||
| TransactionCourseApplicationEdit
|
| TransactionCourseApplicationEdit
|
||||||
{ transactionCourse :: CourseId
|
{ transactionCourse :: CourseId
|
||||||
, transactionUser :: UserId
|
, transactionUser :: UserId
|
||||||
@ -48,17 +52,55 @@ data Transaction
|
|||||||
, transactionUser :: UserId
|
, transactionUser :: UserId
|
||||||
, transactionCourseApplication :: CourseApplicationId
|
, transactionCourseApplication :: CourseApplicationId
|
||||||
}
|
}
|
||||||
| TransactionSubmissionUser
|
|
||||||
|
-- TODO: audit work in progress
|
||||||
|
| TransactionSubmissionEdit
|
||||||
|
{ transactionSubmission :: SubmissionId
|
||||||
|
, transactionSheet :: SheetId
|
||||||
|
}
|
||||||
|
| TransactionSubmissionDelete
|
||||||
|
{ transactionSubmission :: SubmissionId
|
||||||
|
, transactionSheet :: SheetId
|
||||||
|
}
|
||||||
|
|
||||||
|
-- TODO: audit work in progress
|
||||||
|
| TransactionSubmissionUserEdit
|
||||||
{ transactionSubmission :: SubmissionId
|
{ transactionSubmission :: SubmissionId
|
||||||
, transactionUser :: UserId
|
, transactionUser :: UserId
|
||||||
}
|
}
|
||||||
| TransactionSubmissionCorrectorAssigned
|
| TransactionSubmissionUserDelete
|
||||||
{ transactionSubmission :: SubmissionId
|
{ transactionSubmission :: SubmissionId
|
||||||
, transactionMbUser :: Maybe UserId
|
, transactionUser :: UserId
|
||||||
}
|
}
|
||||||
| TransactionSubmissionCorrectionDeleted
|
|
||||||
{ transactionSubmission :: SubmissionId
|
-- TODO: not yet audited
|
||||||
|
| TransactionSubmissionFileEdit
|
||||||
|
{ transactionSubmissionFile :: SubmissionFileId
|
||||||
|
, transactionSubmission :: SubmissionId
|
||||||
|
, transactionFile :: FileId
|
||||||
}
|
}
|
||||||
|
| TransactionSubmissionFileDelete
|
||||||
|
{ transactionSubmissionFile :: SubmissionFileId
|
||||||
|
, transactionSubmission :: SubmissionId
|
||||||
|
, transactionFile :: FileId
|
||||||
|
}
|
||||||
|
|
||||||
|
-- TODO: not yet audited
|
||||||
|
| TransactionUserEdit
|
||||||
|
{ transactionUser :: UserId
|
||||||
|
}
|
||||||
|
| TransactionUserDelete
|
||||||
|
{ transactionUser :: UserId
|
||||||
|
}
|
||||||
|
|
||||||
|
-- TODO: not yet audited
|
||||||
|
| TransactionFileEdit
|
||||||
|
{ transactionFile :: FileId
|
||||||
|
}
|
||||||
|
| TransactionFileDelete
|
||||||
|
{ transactionFile :: FileId
|
||||||
|
}
|
||||||
|
|
||||||
deriving (Eq, Ord, Read, Show, Generic, Typeable)
|
deriving (Eq, Ord, Read, Show, Generic, Typeable)
|
||||||
|
|
||||||
deriveJSON defaultOptions
|
deriveJSON defaultOptions
|
||||||
|
|||||||
@ -465,7 +465,7 @@ correctionsR whereClause displayColumns dbtFilterUI psValidator actions = do
|
|||||||
, SubmissionRatingAssigned =. Just now -- save, since only applies to unassigned
|
, SubmissionRatingAssigned =. Just now -- save, since only applies to unassigned
|
||||||
]
|
]
|
||||||
addMessageI Success $ MsgUpdatedAssignedCorrectorSingle num
|
addMessageI Success $ MsgUpdatedAssignedCorrectorSingle num
|
||||||
mapM_ (\sId -> audit $ TransactionSubmissionCorrectorAssigned sId $ Just uid) sIds
|
mapM_ (\sId -> getJust sId >>= \sub -> audit $ TransactionSubmissionEdit sId $ sub ^. _submissionSheet) sIds
|
||||||
(E.Value selfCorrectors:_) <- E.select . E.from $ \(submission `E.InnerJoin` subuser) -> do
|
(E.Value selfCorrectors:_) <- E.select . E.from $ \(submission `E.InnerJoin` subuser) -> do
|
||||||
E.on $ submission E.^. SubmissionId E.==. subuser E.^. SubmissionUserSubmission
|
E.on $ submission E.^. SubmissionId E.==. subuser E.^. SubmissionUserSubmission
|
||||||
E.where_ $ submission E.^. SubmissionId `E.in_` E.valList subs
|
E.where_ $ submission E.^. SubmissionId `E.in_` E.valList subs
|
||||||
@ -484,7 +484,7 @@ correctionsR whereClause displayColumns dbtFilterUI psValidator actions = do
|
|||||||
-- , SubmissionRatingComment =. Nothing -- Kept for easy reassignment by 2nd corrector
|
-- , SubmissionRatingComment =. Nothing -- Kept for easy reassignment by 2nd corrector
|
||||||
]
|
]
|
||||||
addMessageI Success $ MsgRemovedCorrections num
|
addMessageI Success $ MsgRemovedCorrections num
|
||||||
mapM_ (audit . TransactionSubmissionCorrectionDeleted) subs
|
mapM_ (\subId -> getJust subId >>= \submission -> audit $ TransactionSubmissionEdit subId $ submission ^. _submissionSheet) subs
|
||||||
redirect currentRoute
|
redirect currentRoute
|
||||||
FormSuccess (CorrAutoSetCorrectorData shid, subs') -> do
|
FormSuccess (CorrAutoSetCorrectorData shid, subs') -> do
|
||||||
subs <- mapM decrypt $ Set.toList subs'
|
subs <- mapM decrypt $ Set.toList subs'
|
||||||
@ -948,7 +948,7 @@ postCorrectionsCreateR = do
|
|||||||
{ submissionUserUser = sheetUser
|
{ submissionUserUser = sheetUser
|
||||||
, submissionUserSubmission = subId
|
, submissionUserSubmission = subId
|
||||||
}
|
}
|
||||||
audit $ TransactionSubmissionUser subId uid
|
audit $ TransactionSubmissionUserEdit subId uid
|
||||||
when (null groups) $
|
when (null groups) $
|
||||||
addMessageI Warning $ MsgSheetNoRegisteredGroup sheetGroupDesc
|
addMessageI Warning $ MsgSheetNoRegisteredGroup sheetGroupDesc
|
||||||
| length groups < 2
|
| length groups < 2
|
||||||
@ -965,7 +965,7 @@ postCorrectionsCreateR = do
|
|||||||
{ submissionUserUser = sheetPseudonymUser
|
{ submissionUserUser = sheetPseudonymUser
|
||||||
, submissionUserSubmission = subId
|
, submissionUserSubmission = subId
|
||||||
}
|
}
|
||||||
audit $ TransactionSubmissionUser subId uid
|
audit $ TransactionSubmissionUserEdit subId uid
|
||||||
when (length spGroup > 1) $
|
when (length spGroup > 1) $
|
||||||
addMessageI Warning $ MsgSheetNoGroupSubmission sheetGroupDesc
|
addMessageI Warning $ MsgSheetNoGroupSubmission sheetGroupDesc
|
||||||
when allDone $
|
when allDone $
|
||||||
|
|||||||
@ -622,7 +622,8 @@ postSubAssignR tid ssh csh shn cID = do
|
|||||||
, SubmissionRatingAssigned =. (now <$ mbUserId)
|
, SubmissionRatingAssigned =. (now <$ mbUserId)
|
||||||
]
|
]
|
||||||
addMessageI Success MsgCorrectorUpdated
|
addMessageI Success MsgCorrectorUpdated
|
||||||
audit $ TransactionSubmissionCorrectorAssigned sId mbUserId
|
sub <- getJust sId
|
||||||
|
audit $ TransactionSubmissionEdit sId $ sub ^. _submissionSheet
|
||||||
redirect actionUrl
|
redirect actionUrl
|
||||||
let corrForm = wrapForm' BtnSave corrForm' def
|
let corrForm = wrapForm' BtnSave corrForm' def
|
||||||
{ formAction = Just $ SomeRoute actionUrl
|
{ formAction = Just $ SomeRoute actionUrl
|
||||||
|
|||||||
@ -78,10 +78,11 @@ writeSubmissionPlan newSubmissionData = do
|
|||||||
now <- liftIO getCurrentTime
|
now <- liftIO getCurrentTime
|
||||||
execWriterT . forM_ (Map.toList newSubmissionData) $ \(subId, mCorrector) -> case mCorrector of
|
execWriterT . forM_ (Map.toList newSubmissionData) $ \(subId, mCorrector) -> case mCorrector of
|
||||||
Just _ -> do
|
Just _ -> do
|
||||||
|
sub <- lift $ getJust subId
|
||||||
lift $ update subId [ SubmissionRatingBy =. mCorrector
|
lift $ update subId [ SubmissionRatingBy =. mCorrector
|
||||||
, SubmissionRatingAssigned =. Just now
|
, SubmissionRatingAssigned =. Just now
|
||||||
]
|
]
|
||||||
lift $ audit $ TransactionSubmissionCorrectorAssigned subId mCorrector
|
lift $ audit $ TransactionSubmissionEdit subId $ sub ^. _submissionSheet
|
||||||
tell (Set.singleton subId, mempty)
|
tell (Set.singleton subId, mempty)
|
||||||
Nothing ->
|
Nothing ->
|
||||||
tell (mempty, Set.singleton subId)
|
tell (mempty, Set.singleton subId)
|
||||||
|
|||||||
@ -167,6 +167,8 @@ makeLenses_ ''Allocation
|
|||||||
|
|
||||||
makeLenses_ ''File
|
makeLenses_ ''File
|
||||||
|
|
||||||
|
makeLenses_ ''Submission
|
||||||
|
|
||||||
|
|
||||||
-- makeClassy_ ''Load
|
-- makeClassy_ ''Load
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user