parent
adcd5d5aee
commit
d7f2d11392
@ -191,3 +191,5 @@ SubmissionDoneNever: Nie
|
|||||||
SubmissionDoneByFile: Je nach Bewertungsdatei
|
SubmissionDoneByFile: Je nach Bewertungsdatei
|
||||||
SubmissionDoneAlways: Immer
|
SubmissionDoneAlways: Immer
|
||||||
SheetGroupNoGroups: Keine Gruppenabgabe
|
SheetGroupNoGroups: Keine Gruppenabgabe
|
||||||
|
|
||||||
|
CorrDownloadVersion !ident-ok: Version
|
||||||
@ -190,3 +190,5 @@ SubmissionDoneNever: Never
|
|||||||
SubmissionDoneByFile: According to correction file
|
SubmissionDoneByFile: According to correction file
|
||||||
SubmissionDoneAlways: Always
|
SubmissionDoneAlways: Always
|
||||||
SheetGroupNoGroups: No group submission
|
SheetGroupNoGroups: No group submission
|
||||||
|
|
||||||
|
CorrDownloadVersion !ident-ok: Version
|
||||||
@ -65,12 +65,7 @@ subArchiveSource tid ssh csh shn cID sfType = maybeT_ $ do
|
|||||||
submissionID <- lift $ submissionMatchesSheet tid ssh csh shn cID
|
submissionID <- lift $ submissionMatchesSheet tid ssh csh shn cID
|
||||||
rating <- lift $ getRating submissionID
|
rating <- lift $ getRating submissionID
|
||||||
|
|
||||||
case sfType of
|
E.selectSource (E.from $ submissionFileQuery submissionID sfType) .| Conduit.map (Left . entityVal)
|
||||||
SubmissionOriginal -> (.| Conduit.map (Left . entityVal)) . E.selectSource . E.from $ \sf -> do
|
|
||||||
E.where_ $ sf E.^. SubmissionFileSubmission E.==. E.val submissionID
|
|
||||||
E.&&. sf E.^. SubmissionFileIsUpdate E.==. E.val False
|
|
||||||
return sf
|
|
||||||
_other -> E.selectSource (E.from $ submissionFileQuery submissionID) .| Conduit.map (Left . entityVal)
|
|
||||||
|
|
||||||
when (sfType == SubmissionCorrected) $
|
when (sfType == SubmissionCorrected) $
|
||||||
maybe (return ()) (yieldM . fmap Right . ratingFile cID) rating
|
maybe (return ()) (yieldM . fmap Right . ratingFile cID) rating
|
||||||
@ -96,4 +91,4 @@ getCorrectionsDownloadR = do -- download all assigned and open submissions
|
|||||||
when (null subs) $ do
|
when (null subs) $ do
|
||||||
addMessageI Info MsgNoOpenSubmissions
|
addMessageI Info MsgNoOpenSubmissions
|
||||||
redirect CorrectionsR
|
redirect CorrectionsR
|
||||||
submissionMultiArchive SubmissionDownloadAnonymous $ Set.fromList subs
|
submissionMultiArchive SubmissionDownloadAnonymous SubmissionCorrected $ Set.fromList subs
|
||||||
|
|||||||
@ -442,7 +442,7 @@ instance Finite ActionCorrections
|
|||||||
nullaryPathPiece ''ActionCorrections $ camelToPathPiece' 1
|
nullaryPathPiece ''ActionCorrections $ camelToPathPiece' 1
|
||||||
embedRenderMessage ''UniWorX ''ActionCorrections id
|
embedRenderMessage ''UniWorX ''ActionCorrections id
|
||||||
|
|
||||||
data ActionCorrectionsData = CorrDownloadData SubmissionDownloadAnonymous
|
data ActionCorrectionsData = CorrDownloadData SubmissionDownloadAnonymous SubmissionFileType
|
||||||
| CorrSetCorrectorData (Maybe UserId)
|
| CorrSetCorrectorData (Maybe UserId)
|
||||||
| CorrAutoSetCorrectorData SheetId
|
| CorrAutoSetCorrectorData SheetId
|
||||||
| CorrDeleteData
|
| CorrDeleteData
|
||||||
@ -491,11 +491,11 @@ correctionsR' whereClause displayColumns dbtFilterUI psValidator actions = do
|
|||||||
auditAllSubEdit = mapM_ $ \sId -> getJust sId >>= \sub -> audit $ TransactionSubmissionEdit sId $ sub ^. _submissionSheet
|
auditAllSubEdit = mapM_ $ \sId -> getJust sId >>= \sub -> audit $ TransactionSubmissionEdit sId $ sub ^. _submissionSheet
|
||||||
|
|
||||||
formResult actionRes $ \case
|
formResult actionRes $ \case
|
||||||
(CorrDownloadData nonAnonymous, subs) -> do
|
(CorrDownloadData nonAnonymous sft, subs) -> do
|
||||||
ids <- Set.fromList <$> forM (Set.toList subs) decrypt -- Set is not traversable
|
ids <- Set.fromList <$> forM (Set.toList subs) decrypt -- Set is not traversable
|
||||||
MsgRenderer mr <- getMsgRenderer
|
MsgRenderer mr <- getMsgRenderer
|
||||||
setContentDisposition' $ Just ((addExtension `on` unpack) (mr MsgSubmissionArchiveName) extensionZip)
|
setContentDisposition' $ Just ((addExtension `on` unpack) (mr MsgSubmissionArchiveName) extensionZip)
|
||||||
sendResponse =<< submissionMultiArchive nonAnonymous ids
|
sendResponse =<< submissionMultiArchive nonAnonymous sft ids
|
||||||
(CorrSetCorrectorData (Just uid), subs') -> do
|
(CorrSetCorrectorData (Just uid), subs') -> do
|
||||||
subs <- mapM decrypt $ Set.toList subs'
|
subs <- mapM decrypt $ Set.toList subs'
|
||||||
now <- liftIO getCurrentTime
|
now <- liftIO getCurrentTime
|
||||||
@ -616,7 +616,9 @@ type ActionCorrections' = (ActionCorrections, AForm (HandlerFor UniWorX) ActionC
|
|||||||
|
|
||||||
downloadAction, deleteAction :: ActionCorrections'
|
downloadAction, deleteAction :: ActionCorrections'
|
||||||
downloadAction = ( CorrDownload
|
downloadAction = ( CorrDownload
|
||||||
, CorrDownloadData <$> apopt (selectField optionsFinite) (fslI MsgCorrDownloadAnonymous & setTooltip MsgCorrDownloadAnonymousTip) (Just SubmissionDownloadAnonymous)
|
, CorrDownloadData
|
||||||
|
<$> apopt (selectField optionsFinite) (fslI MsgCorrDownloadAnonymous & setTooltip MsgCorrDownloadAnonymousTip) (Just SubmissionDownloadAnonymous)
|
||||||
|
<*> apopt (selectField optionsFinite) (fslI MsgCorrDownloadVersion) (Just SubmissionCorrected)
|
||||||
)
|
)
|
||||||
deleteAction = ( CorrDelete
|
deleteAction = ( CorrDelete
|
||||||
, pure CorrDeleteData
|
, pure CorrDeleteData
|
||||||
|
|||||||
@ -260,20 +260,26 @@ planSubmissions sid restriction = do
|
|||||||
maximumsBy f xs = flip Set.filter xs $ \x -> maybe True (((==) `on` f) x . maximumBy (comparing f)) $ fromNullable xs
|
maximumsBy f xs = flip Set.filter xs $ \x -> maybe True (((==) `on` f) x . maximumBy (comparing f)) $ fromNullable xs
|
||||||
|
|
||||||
|
|
||||||
submissionFileSource :: SubmissionId -> ConduitT () DBFile (YesodDB UniWorX) ()
|
submissionFileSource :: SubmissionId -> SubmissionFileType -> ConduitT () DBFile (YesodDB UniWorX) ()
|
||||||
submissionFileSource subId = E.selectSource (E.from $ submissionFileQuery subId)
|
submissionFileSource subId sft = E.selectSource (E.from $ submissionFileQuery subId sft)
|
||||||
.| C.map entityVal
|
.| C.map entityVal
|
||||||
.| sourceFiles'
|
.| sourceFiles'
|
||||||
|
|
||||||
submissionFileQuery :: SubmissionId -> E.SqlExpr (Entity SubmissionFile)
|
submissionFileQuery :: SubmissionId -> SubmissionFileType
|
||||||
|
-> E.SqlExpr (Entity SubmissionFile)
|
||||||
-> E.SqlQuery (E.SqlExpr (Entity SubmissionFile))
|
-> E.SqlQuery (E.SqlExpr (Entity SubmissionFile))
|
||||||
submissionFileQuery submissionID sf = E.distinctOnOrderBy [E.asc $ sf E.^. SubmissionFileTitle] $ do
|
submissionFileQuery submissionID sft sf = E.distinctOnOrderBy [E.asc $ sf E.^. SubmissionFileTitle] $ do
|
||||||
E.where_ $ sf E.^. SubmissionFileSubmission E.==. E.val submissionID
|
E.where_ $ sf E.^. SubmissionFileSubmission E.==. E.val submissionID
|
||||||
E.where_ . E.not_ . E.exists . E.from $ \sf' ->
|
case sft of
|
||||||
E.where_ $ sf' E.^. SubmissionFileIsDeletion
|
SubmissionOriginal ->
|
||||||
E.&&. sf' E.^. SubmissionFileSubmission E.==. sf E.^. SubmissionFileSubmission
|
E.where_ . E.not_ $ sf E.^. SubmissionFileIsUpdate
|
||||||
E.&&. sf' E.^. SubmissionFileTitle E.==. sf E.^. SubmissionFileTitle
|
E.||. sf E.^. SubmissionFileIsDeletion
|
||||||
E.orderBy [E.desc $ sf E.^. SubmissionFileIsUpdate] -- E.desc returns corrector updated data first
|
SubmissionCorrected -> do
|
||||||
|
E.where_ . E.not_ . E.exists . E.from $ \sf' ->
|
||||||
|
E.where_ $ sf' E.^. SubmissionFileIsDeletion
|
||||||
|
E.&&. sf' E.^. SubmissionFileSubmission E.==. sf E.^. SubmissionFileSubmission
|
||||||
|
E.&&. sf' E.^. SubmissionFileTitle E.==. sf E.^. SubmissionFileTitle
|
||||||
|
E.orderBy [E.desc $ sf E.^. SubmissionFileIsUpdate] -- E.desc returns corrector updated data first
|
||||||
return sf
|
return sf
|
||||||
|
|
||||||
data SubmissionDownloadAnonymous = SubmissionDownloadAnonymous
|
data SubmissionDownloadAnonymous = SubmissionDownloadAnonymous
|
||||||
@ -287,8 +293,8 @@ nullaryPathPiece ''SubmissionDownloadAnonymous $ camelToPathPiece' 2
|
|||||||
embedRenderMessage ''UniWorX ''SubmissionDownloadAnonymous id
|
embedRenderMessage ''UniWorX ''SubmissionDownloadAnonymous id
|
||||||
makePrisms ''SubmissionDownloadAnonymous
|
makePrisms ''SubmissionDownloadAnonymous
|
||||||
|
|
||||||
submissionMultiArchive :: SubmissionDownloadAnonymous -> Set SubmissionId -> Handler TypedContent
|
submissionMultiArchive :: SubmissionDownloadAnonymous -> SubmissionFileType -> Set SubmissionId -> Handler TypedContent
|
||||||
submissionMultiArchive anonymous (Set.toList -> ids) = do
|
submissionMultiArchive anonymous sft (Set.toList -> ids) = do
|
||||||
(dbrunner, cleanup) <- getDBRunner
|
(dbrunner, cleanup) <- getDBRunner
|
||||||
|
|
||||||
ratedSubmissions <- runDBRunner dbrunner $ do
|
ratedSubmissions <- runDBRunner dbrunner $ do
|
||||||
@ -376,7 +382,7 @@ submissionMultiArchive anonymous (Set.toList -> ids) = do
|
|||||||
|
|
||||||
fileEntitySource = do
|
fileEntitySource = do
|
||||||
yieldM $ ratingFile cID rating
|
yieldM $ ratingFile cID rating
|
||||||
submissionFileSource submissionID
|
submissionFileSource submissionID sft
|
||||||
|
|
||||||
withinDirectory f@File{..} = f { fileTitle = directoryName </> fileTitle }
|
withinDirectory f@File{..} = f { fileTitle = directoryName </> fileTitle }
|
||||||
|
|
||||||
|
|||||||
@ -31,9 +31,7 @@ import Data.Text.Metrics (damerauLevenshtein)
|
|||||||
|
|
||||||
data SubmissionFileType = SubmissionOriginal | SubmissionCorrected
|
data SubmissionFileType = SubmissionOriginal | SubmissionCorrected
|
||||||
deriving (Show, Read, Eq, Ord, Enum, Bounded, Generic)
|
deriving (Show, Read, Eq, Ord, Enum, Bounded, Generic)
|
||||||
|
deriving anyclass (Universe, Finite)
|
||||||
instance Universe SubmissionFileType
|
|
||||||
instance Finite SubmissionFileType
|
|
||||||
|
|
||||||
nullaryPathPiece ''SubmissionFileType $ camelToPathPiece' 1
|
nullaryPathPiece ''SubmissionFileType $ camelToPathPiece' 1
|
||||||
|
|
||||||
|
|||||||
@ -0,0 +1,2 @@
|
|||||||
|
$newline never
|
||||||
|
Es kann nun eingestellt werden, ob, beim Download mehrerer Abgaben, die (wmgl.) korrigierte oder die originale Version heruntergeladen werden soll.
|
||||||
@ -0,0 +1,2 @@
|
|||||||
|
$newline never
|
||||||
|
When bulk downloading submissions there now is a setting to choose between the original and corrected versions.
|
||||||
Reference in New Issue
Block a user