diff --git a/src/Handler/Submission.hs b/src/Handler/Submission.hs index 0a78a8458..1f1a15e15 100644 --- a/src/Handler/Submission.hs +++ b/src/Handler/Submission.hs @@ -124,7 +124,7 @@ postSubmissionR tid csh shn (SubmissionMode mcid) = do E.on (user E.^. UserId E.==. submissionEdit E.^. SubmissionEditUser) E.where_ $ submissionEdit E.^. SubmissionEditSubmission E.==. E.val smid E.orderBy [E.desc $ submissionEdit E.^. SubmissionEditTime] - E.limit 1 + E.limit 10 return $ (user E.^. UserDisplayName, submissionEdit E.^. SubmissionEditTime) let lastEdits = map (bimap E.unValue E.unValue) lastEditValues return (sheet,buddies,oldfiles,lastEdits) @@ -174,10 +174,6 @@ postSubmissionR tid csh shn (SubmissionMode mcid) = do now <- liftIO $ getCurrentTime smid <- do smid <- runConduit $ transPipe lift files .| Conduit.map Left .| sinkSubmission shid uid ((,False) <$> msmid) - - insertUnique $ SubmissionUser uid smid - -- insert $ SubmissionEdit uid now smid -- sinkSubmission already does this - -- Determine members of pre-registered group groupUids <- fmap (setFromList . map E.unValue) . E.select . E.from $ \(submissionGroupUser `E.InnerJoin` submissionGroup `E.InnerJoin` submissionGroupUser') -> do E.on $ submissionGroup E.^. SubmissionGroupId E.==. submissionGroupUser' E.^. SubmissionGroupUserSubmissionGroup @@ -185,10 +181,12 @@ postSubmissionR tid csh shn (SubmissionMode mcid) = do E.where_ $ submissionGroupUser E.^. SubmissionGroupUserUser E.==. E.val uid E.&&. submissionGroup E.^. SubmissionGroupCourse E.==. E.val sheetCourse return $ submissionGroupUser' E.^. SubmissionGroupUserUser - -- SubmissionUser for all group members (pre-registered & ad-hoc) - forM_ (groupUids `Set.union` adhocIds) $ \uid' -> void . insertUnique $ SubmissionUser uid' smid - + let subUsers = Set.insert uid $ groupUids `Set.union` adhocIds + -- remove obsolete old entries + deleteWhere [SubmissionUserSubmission ==. smid, SubmissionUserUser /<-. setToList subUsers] + -- maybe add current users + forM_ subUsers $ \uid' -> void . insertUnique $ SubmissionUser uid' smid return smid cID <- encrypt smid return $ Just cID @@ -214,7 +212,7 @@ postSubmissionR tid csh shn (SubmissionMode mcid) = do