cannot remember

This commit is contained in:
SJost 2018-10-11 10:19:25 +02:00
parent 45a71cc038
commit a6afd02a15
4 changed files with 44 additions and 14 deletions

View File

@ -5,6 +5,7 @@ BtnRegister: Anmelden
BtnDeregister: Abmelden BtnDeregister: Abmelden
BtnHijack: Sitzung übernehmen BtnHijack: Sitzung übernehmen
Aborted: Abgebrochen
Registered: Angemeldet Registered: Angemeldet
RegisterFrom: Anmeldungen von RegisterFrom: Anmeldungen von
RegisterTo: Anmeldungen bis RegisterTo: Anmeldungen bis

View File

@ -142,14 +142,23 @@ postProfileR = do
postProfileDataR :: Handler Html postProfileDataR :: Handler Html
postProfileDataR = do postProfileDataR = do
(uid, User{..}) <- requireAuthPair
((btnResult,_), _) <- runFormPost $ buttonForm ((btnResult,_), _) <- runFormPost $ buttonForm
case btnResult of case btnResult of
(FormSuccess BtnDelete) -> addMessage Warning "Delete-Knopf gedrückt" (FormSuccess BtnDelete) -> do
(FormSuccess BtnAbort ) -> addMessage Warning "Knopf Abort erkannt" (uid, User{..}) <- requireAuthPair
_other -> addMessage Warning "KEIN Knopf erkannt" addMessage Warning "Delete-Knopf gedrückt"
addMessage Error "Löschen der Daten wurde noch nicht implementiert." addMessage Error "Löschen der Daten wurde noch nicht implementiert."
getProfileDataR -- first determine all submission that solely depend on this user:
-- SubmissionGroup / SubmissionGroupUser
-- Submission / SubmissionUser
-- runDB $ deleteCascade uid
(FormSuccess BtnAbort ) -> do
addMessageI Info MsgAborted
getProfileDataR
_other -> do
getProfileDataR
getProfileDataR :: Handler Html getProfileDataR :: Handler Html
getProfileDataR = do getProfileDataR = do
@ -176,13 +185,30 @@ getProfileDataR = do
-- TODO: move this into a Message and/or Widget-File -- TODO: move this into a Message and/or Widget-File
let delWdgt = [whamlet| let delWdgt = [whamlet|
<form .form-inline method=post action=@{ProfileDataR} enctype=#{btnEnctype}> <form .form-inline method=post action=@{ProfileDataR} enctype=#{btnEnctype}>
<div>Sind Sie sich absolut sicher, alle gespeicherten Daten zu löschen?
Abgegebene Hausaufgaben werden dadurch rückwirkend gelöscht,
wodurch eventuell ein Klausurbonus nicht mehr anerkannt wird.
<div> <div>
<em>Gilt nicht in der Testphase von Uni2work: Während der Testphase von Uni2work können Sie hiermit
Klausurnoten können Sie hiermit nicht löschen. Ihren Account bei Uni2work vollständig löschen.
Da diese 5 Jahre bis nach Ihrer Exmatrikulation aufbewahrt werden müssen. Mit Ihrem Campus-Account können Sie sich aber danach
jederzeit erneut einloggen, wodurch wieder ein leerer Account erstellt wird.
<div>
Hochgeladene Hausaufgaben-Dateien werden unabhhängig vom Urherber nur dann gelöscht,
wenn die Dateien ausschließlich Ihnen zugeordnet sind.
Dateien aus Gruppenabgaben werden also erst dann gelöscht,
wenn alle Gruppenmitglieder Ihren Account gelöscht haben.
<div>
<em>Achtung:
Auch abgegebene Hausübungen werden gelöscht!
Falls ein Veranstalter Informationen darüber nicht anderweitig gespeichert hat,
kann dadurch ein etwaiger Hausaufgabenbonus verloren gehen.
(Verbuchte Noten sollten dadurch nicht betroffen sein, aber in einem etwaigen
Streitfall konnen die per Uni2work verwalteten Hausaufgaben dann
auch nicht mehr rekonstruiert/berücksichtigt werden.)
<div>
<em>Nach der Testphase von Uni2work wird das Löschen eines Accounts etwas
eingeschränkt werden, da z.B. Klausurnoten 5 Jahre bis nach Exmatrikulation
aufbewahrt werden müssen.
<div>
Sind Sie sich absolut sicher, alle Ihre in Uni2work gespeicherten Daten zu löschen?
<div>^{btnWdgt} <div>^{btnWdgt}
|] |]
defaultLayout $ do defaultLayout $ do

View File

@ -153,7 +153,7 @@ combinedButtonField btns inner csrf = do
-} -}
-- buttonForm :: Button a => Markup -> MForm (HandlerT UniWorX IO) (FormResult a, (WidgetT UniWorX IO ())) -- buttonForm :: Button a => Markup -> MForm (HandlerT UniWorX IO) (FormResult a, (WidgetT UniWorX IO ()))
buttonForm :: (Button UniWorX a) => Form a buttonForm :: (Button UniWorX a, Show a) => Form a
buttonForm csrf = do buttonForm csrf = do
buttonIdent <- newFormIdent buttonIdent <- newFormIdent
let button b = mopt (buttonField b) ("n/a"{ fsName = Just buttonIdent }) Nothing let button b = mopt (buttonField b) ("n/a"{ fsName = Just buttonIdent }) Nothing
@ -164,12 +164,15 @@ buttonForm csrf = do
$forall bView <- btnViews $forall bView <- btnViews
^{fvInput bView} ^{fvInput bView}
|] |]
$logDebugS "FormResult" $ tshow results
return (accResult results,widget) return (accResult results,widget)
where where
accResult :: Foldable f => f (FormResult (Maybe a)) -> FormResult a accResult :: Foldable f => f (FormResult (Maybe a)) -> FormResult a
accResult = Foldable.foldr accResult' FormMissing accResult = Foldable.foldr accResult' FormMissing
accResult' :: FormResult (Maybe a) -> FormResult a -> FormResult a accResult' :: FormResult (Maybe a) -> FormResult a -> FormResult a
-- TODO: Does not work for Forms with more than 3 buttons, since all deliver FormFailure except for one!
-- TODO: Maybe change buttonField?
accResult' (FormSuccess (Just _)) (FormSuccess _) = FormFailure ["Ambiguous button parse"] accResult' (FormSuccess (Just _)) (FormSuccess _) = FormFailure ["Ambiguous button parse"]
accResult' (FormSuccess (Just x)) _ = FormSuccess x accResult' (FormSuccess (Just x)) _ = FormSuccess x
accResult' _ x@(FormSuccess _) = x --SJ: Is this safe? Shouldn't Failure override Success? accResult' _ x@(FormSuccess _) = x --SJ: Is this safe? Shouldn't Failure override Success?

View File

@ -195,7 +195,7 @@ buttonField btn = Field {fieldParse, fieldView, fieldEnctype}
fieldParse [] _ = return $ Right Nothing fieldParse [] _ = return $ Right Nothing
fieldParse [str] _ fieldParse [str] _
| str == toPathPiece btn = return $ Right $ Just btn | str == toPathPiece btn = return $ Right $ Just btn
| otherwise = return $ Left "Wrong button value" | otherwise = return $ Left "Wrong button value" -- SJ: Right Nothing?!
fieldParse _ _ = return $ Left "Multiple button values" fieldParse _ _ = return $ Left "Multiple button values"
combinedButtonField :: (Button site a, Show (ButtonCssClass site)) => [a] -> AForm (HandlerT site IO) [Maybe a] combinedButtonField :: (Button site a, Show (ButtonCssClass site)) => [a] -> AForm (HandlerT site IO) [Maybe a]