diff --git a/src/Handler/Utils/Submission.hs b/src/Handler/Utils/Submission.hs index be6745a6a..7356e17b0 100644 --- a/src/Handler/Utils/Submission.hs +++ b/src/Handler/Utils/Submission.hs @@ -129,7 +129,7 @@ assignSubmissions sid restriction = do (E.Value sheetId, Entity subId Submission{..}, _) <- submissionDataRaw guard $ sheetId == sid case restriction of - Just restriction' -> + Just restriction' -> guard $ subId `Set.member` restriction' Nothing -> guard $ is _Nothing submissionRatingBy @@ -146,7 +146,7 @@ assignSubmissions sid restriction = do => (Map SubmissionId a -> b) -> m b withSubmissionData f = f <$> (mappend <$> ask <*> State.get) - + -- | How many additional submission should the given corrector be assigned, if possible? calculateDeficit :: UserId -> Map SubmissionId (Maybe UserId, Map UserId _, SheetId) -> Rational calculateDeficit corrector submissionState = getSum $ foldMap Sum deficitBySheet @@ -178,7 +178,7 @@ assignSubmissions sid restriction = do , fromMaybe 0 $ do guard $ corrState /= CorrectorExcused return . negate $ (byProportion / proportionSum) * fromIntegral sheetSize - ] + ] | otherwise = assigned return $ negate extra @@ -257,6 +257,7 @@ submissionMultiArchive (Set.toList -> ids) = do execWriter . forM ratedSubmissions $ \(_rating,_submission,(shn,csh,ssh,tid)) -> tell (Set.singleton shn, Set.singleton csh, Set.singleton ssh, Set.singleton tid) + setContentDisposition' $ Just "submissions.zip" (<* cleanup) . respondSource "application/zip" . transPipe (runDBRunner dbrunner) $ do let fileEntitySource' :: (Rating, Entity Submission, (SheetName,CourseShorthand,SchoolId,TermId)) -> Source (YesodDB UniWorX) File