diff --git a/routes b/routes
index 42afd5eff..e1ec5a1f5 100644
--- a/routes
+++ b/routes
@@ -272,26 +272,9 @@
/lms/#SchoolId/#QualificationShorthand/result LmsResultR GET POST
/lms/#SchoolId/#QualificationShorthand/result/upload LmsResultUploadR GET POST
/lms/#SchoolId/#QualificationShorthand/result/direct LmsResultDirectR POST
+
/api ApiDocsR GET !free
/swagger SwaggerR GET !free
/swagger.json SwaggerJsonR GET !free
!/*WellKnownFileName WellKnownR GET !free
-
--- for users
-/qualification QualificationAllR GET !free
-/qualification/#SchoolId QualificationSchoolR GET !free -- TODO
-/qualification/#SchoolId/#QualificationShorthand QualificationR GET !free -- must be logged in though
--- OSIS CSV Export Demo
-/lms LmsAllR GET POST
-/lms/#SchoolId LmsSchoolR GET
-/lms/#SchoolId/#QualificationShorthand LmsR GET POST
-/lms/#SchoolId/#QualificationShorthand/edit LmsEditR GET POST
-/lms/#SchoolId/#QualificationShorthand/users LmsUsersR GET
-/lms/#SchoolId/#QualificationShorthand/users/direct LmsUsersDirectR GET
-/lms/#SchoolId/#QualificationShorthand/userlist LmsUserlistR GET POST
-/lms/#SchoolId/#QualificationShorthand/userlist/upload LmsUserlistUploadR GET POST
-/lms/#SchoolId/#QualificationShorthand/userlist/direct LmsUserlistDirectR POST
-/lms/#SchoolId/#QualificationShorthand/result LmsResultR GET POST
-/lms/#SchoolId/#QualificationShorthand/result/upload LmsResultUploadR GET POST
-/lms/#SchoolId/#QualificationShorthand/result/direct LmsResultDirectR POST
diff --git a/src/Handler/Exam/Form.hs b/src/Handler/Exam/Form.hs
index d7e2e3f43..25058461c 100644
--- a/src/Handler/Exam/Form.hs
+++ b/src/Handler/Exam/Form.hs
@@ -346,8 +346,6 @@ examFormTemplate (Entity eId Exam{..}) = do
mAuthorshipStatement <- maybe (pure Nothing) getEntity examAuthorshipStatement
- mAuthorshipStatement <- maybe (pure Nothing) getEntity examAuthorshipStatement
-
return ExamForm
{ efName = examName
, efGradingRule = examGradingRule
diff --git a/src/Handler/Info.hs b/src/Handler/Info.hs
index 170a156f7..b4ce9389d 100644
--- a/src/Handler/Info.hs
+++ b/src/Handler/Info.hs
@@ -42,7 +42,6 @@ getLegalR =
-- | Allgemeine Informationen
getInfoR :: Handler Html
getInfoR = do
- AppSettings{..} <- getsYesod appSettings'
changelogEntries' <- runDB $ selectList [ ChangelogItemFirstSeenItem <-. universeF ] []
let changelogEntries = Map.fromListWith Set.union
[ (Down changelogItemFirstSeenFirstSeen, Set.singleton changelogItemFirstSeenItem)
diff --git a/src/Handler/SystemMessage.hs b/src/Handler/SystemMessage.hs
index 4e24d8afc..94e900e4f 100644
--- a/src/Handler/SystemMessage.hs
+++ b/src/Handler/SystemMessage.hs
@@ -50,12 +50,6 @@ systemMessageVolatileClusterSettingsForm (fmap Set.toList -> mPrev) = wFormToAFo
fmap Set.fromList <$> massInputAccumEditW miAdd miEdit miButtonAction miLayout ("system-message-volatile-cluster-settings" :: Text) (fslI MsgSystemMessageOnVolatileClusterSettings) False mPrev
-invalidateVisibleSystemMessages :: (MonadHandler m, HandlerSite m ~ UniWorX)
- => m ()
-invalidateVisibleSystemMessages
- = memcachedByInvalidate AuthCacheVisibleSystemMessages $ Proxy @(Map SystemMessageId (Maybe UTCTime, Maybe UTCTime))
-
-
getMessageR, postMessageR :: CryptoUUIDSystemMessage -> Handler Html
getMessageR = postMessageR
postMessageR cID = do
diff --git a/src/Jobs/Handler/Files.hs b/src/Jobs/Handler/Files.hs
index a870f3fa5..c8e8e38af 100644
--- a/src/Jobs/Handler/Files.hs
+++ b/src/Jobs/Handler/Files.hs
@@ -34,6 +34,7 @@ import Control.Monad.Logger (askLoggerIO, runLoggingT)
import System.Clock
import qualified Data.Set as Set
+import qualified Data.Sequence as Seq
import Jobs.Handler.Intervals.Utils
diff --git a/src/Utils/Form.hs b/src/Utils/Form.hs
index d1ce12832..d956c5977 100644
--- a/src/Utils/Form.hs
+++ b/src/Utils/Form.hs
@@ -80,25 +80,6 @@ import qualified Data.ByteString as BS
-- Fields --
------------
-_olOptions :: Traversal' (OptionList a) (Option a)
-_olOptions f = \case
- x@OptionList{} -> (\olOptions -> x{olOptions}) <$> traverse f (olOptions x)
- x@OptionListGrouped{} -> (\olOptionsGrouped -> x{olOptionsGrouped}) <$> traverseOf (traverse . _2 . traverse) f (olOptionsGrouped x)
-
-_olOptionsGrouped :: Traversal' (OptionList a) (Text, [Option a])
-_olOptionsGrouped f = \case
- x@OptionList{} -> pure x
- x@OptionListGrouped{} -> (\olOptionsGrouped -> x{olOptionsGrouped}) <$> traverse f (olOptionsGrouped x)
-
-_olReadExternal :: Lens' (OptionList a) (Text -> Maybe a)
-_olReadExternal f = \case
- x@OptionList{} -> (\olReadExternal -> x{olReadExternal}) <$> f (olReadExternal x)
- x@OptionListGrouped{} -> (\olReadExternalGrouped -> x{olReadExternalGrouped}) <$> f (olReadExternalGrouped x)
-
-------------
--- Fields --
-------------
-
_olOptions :: Traversal' (OptionList a) (Option a)
_olOptions f = \case
x@OptionList{} -> (\olOptions -> x{olOptions}) <$> traverse f (olOptions x)
diff --git a/templates/i18n/changelog/workflows-archivation.de-de-formal.hamlet b/templates/i18n/changelog/workflows-archivation.de-de-formal.hamlet
deleted file mode 100644
index c775ce108..000000000
--- a/templates/i18n/changelog/workflows-archivation.de-de-formal.hamlet
+++ /dev/null
@@ -1,11 +0,0 @@
-$newline never
-
-$maybe archived <- appWorkflowWorkflowArchiveAfter
- Workflows werden nun automatisch archiviert, sobald sie #
- $if archived /= 0
- seit #{tshow (nominalDiffTimeToSeconds archived / 86400)} Tagen #
- abgeschlossen sind.
-$nothing
- Workflows können nun archiviert werden.
-
-Archivierte Workflows werden nicht mehr in der Liste laufender Workflows angezeigt, sondern sind über ein separates Archiv verfügbar.
diff --git a/templates/i18n/changelog/workflows-archivation.en-eu.hamlet b/templates/i18n/changelog/workflows-archivation.en-eu.hamlet
deleted file mode 100644
index 1a1fd4e70..000000000
--- a/templates/i18n/changelog/workflows-archivation.en-eu.hamlet
+++ /dev/null
@@ -1,13 +0,0 @@
-$newline never
-
-$maybe archived <- appWorkflowWorkflowArchiveAfter
- Workflows are now being archived automatically #
- $if archived == 0
- immediately #
- $else
- #{tshow (nominalDiffTimeToSeconds archived / 86400)} days #
- after finalization.
-$nothing
- Workflow may now be archived.
-
-Archived workflows are not shown among the list of running workflows, but can instead be accessed via a separate archive list.