diff --git a/src/Handler/Users.hs b/src/Handler/Users.hs
index 605b49f3d..29f3d71f3 100644
--- a/src/Handler/Users.hs
+++ b/src/Handler/Users.hs
@@ -132,7 +132,7 @@ postUsersR = do
, sortable (Just "auth-ldap") (i18nCell MsgAuthMode) $ \DBRow{ dbrOutput = Entity _ User{..} } -> i18nCell userAuthentication
, sortable (Just "ldap-sync") (i18nCell MsgLdapSynced) $ \DBRow{ dbrOutput = Entity _ User{..} } -> maybe mempty dateTimeCell userLastLdapSynchronisation
, flip foldMap universeF $ \function ->
- sortable Nothing (i18nCell function) $ \DBRow{ dbrOutput = Entity uid _ } -> flip (set' cellContents) mempty $ do
+ sortable (Just $ SortingKey $ CI.mk $ toPathPiece function) (i18nCell function) $ \DBRow{ dbrOutput = Entity uid _ } -> flip (set' cellContents) mempty $ do
schools <- liftHandler . runDB . E.select . E.from $ \(school `E.InnerJoin` userFunction) -> do
E.on $ school E.^. SchoolId E.==. userFunction E.^. UserFunctionSchool
E.where_ $ userFunction E.^. UserFunctionUser E.==. E.val uid
@@ -145,7 +145,7 @@ postUsersR = do
$forall (E.Value sh) <- schools
#{sh}
|]
- , sortable Nothing (i18nCell MsgUserSystemFunctions) $ \DBRow{ dbrOutput = Entity uid _ } ->
+ , sortable (Just "system-function") (i18nCell MsgUserSystemFunctions) $ \DBRow{ dbrOutput = Entity uid _ } ->
let getFunctions = fmap (map $ userSystemFunctionFunction . entityVal) . liftHandler . runDB $ selectList [ UserSystemFunctionUser ==. uid, UserSystemFunctionIsOptOut ==. False ] [ Asc UserSystemFunctionFunction ]
in listCell' getFunctions i18nCell
, sortable Nothing (mempty & cellAttrs <>~ pure ("hide-columns--hider-label", mr MsgTableActionsHead)) $ \inp@DBRow{ dbrOutput = Entity uid _ } -> FormCell
@@ -201,7 +201,14 @@ postUsersR = do
, dbtRowKey = (E.^. UserId)
, dbtColonnade
, dbtProj = dbtProjId
- , dbtSorting = Map.fromList
+ , dbtSorting = Map.fromList $
+ [ ( SortingKey $ CI.mk $ toPathPiece function
+ , SortColumn $ \user -> E.subSelect $ E.from $ \uf -> do
+ E.where_ $ uf E.^. UserFunctionUser E.==. user E.^. UserId
+ E.&&. uf E.^. UserFunctionFunction E.==. E.val function
+ return (uf E.^. UserFunctionSchool)
+ ) | function <- universeF
+ ] ++
[ ( "name"
, SortColumn $ \user -> user E.^. UserSurname
)
@@ -234,6 +241,11 @@ postUsersR = do
E.orderBy [E.asc (usrSpvr E.^. UserDisplayName)]
return (usrSpvr E.^. UserDisplayName)
)
+ , ( "system-function"
+ , SortColumn $ \user -> E.subSelect $ E.from $ \usf -> do
+ E.where_ $ usf E.^. UserSystemFunctionUser E.==. user E.^. UserId
+ return $ usf E.^. UserSystemFunctionFunction
+ )
]
, dbtFilter = Map.fromList -- OverloadedLists does not work with the templates
[ ( "user-search", FilterColumn $ \user (criteria :: Set.Set Text) ->
diff --git a/src/Jobs.hs b/src/Jobs.hs
index ae2000aa9..7dcc4d81a 100644
--- a/src/Jobs.hs
+++ b/src/Jobs.hs
@@ -246,10 +246,11 @@ manageJobPool foundation@UniWorX{..} unmask = shutdownOnException $ \routeExc ->
{ jobWorkers = jobWorkers oldState `Map.withoutKeys` Map.keysSet deadWorkers
}
guard . not $ Map.null deadWorkers
- return . forM_ (Map.toList deadWorkers) $ \(jobAsync, result) -> do
- case result of
- Right () -> $logInfoS "JobPoolManager" [st|Job-Executor #{showWorkerId (jobWorkerName oldState jobAsync)} terminated|]
- Left e -> $logErrorS "JobPoolManager" [st|Job-Executer #{showWorkerId (jobWorkerName oldState jobAsync)} crashed: #{tshow e}|]
+ return . forM_ (Map.toList deadWorkers) $ \(jobAsync, _result) -> do
+ -- TOO MUCH LOGGING
+ -- case result of
+ -- Right () -> $logInfoS "JobPoolManager" [st|Job-Executor #{showWorkerId (jobWorkerName oldState jobAsync)} terminated|]
+ -- Left e -> $logErrorS "JobPoolManager" [st|Job-Executer #{showWorkerId (jobWorkerName oldState jobAsync)} crashed: #{tshow e}|]
void . lift . allocateLinkedAsync $
let go = do
next <- evalRandTIO . mapRandT (liftIO . atomically) . runMaybeT $ do