From 9814712c61d7b1b1c81070e4cdc8016952052854 Mon Sep 17 00:00:00 2001 From: Steffen Date: Thu, 23 May 2024 18:18:13 +0200 Subject: [PATCH] refactor(letter): first test version of new letters --- src/Handler/PrintCenter.hs | 5 +- src/Utils/Print.hs | 4 +- src/Utils/Print/Letters.hs | 4 + src/Utils/Print/RenewQualification.hs | 38 +- src/Utils/Print/RenewQualificationF.hs | 100 + templates/letter/din5008with_pin_new.latex | 206 ++ templates/letter/fraport_renewal.md | 2 + templates/letter/fraport_renewal_new.md | 130 ++ uniworx.cabal.bak | 2137 -------------------- 9 files changed, 470 insertions(+), 2156 deletions(-) create mode 100644 src/Utils/Print/RenewQualificationF.hs create mode 100644 templates/letter/din5008with_pin_new.latex create mode 100644 templates/letter/fraport_renewal_new.md delete mode 100644 uniworx.cabal.bak diff --git a/src/Handler/PrintCenter.hs b/src/Handler/PrintCenter.hs index 084cc74d6..6616ee91b 100644 --- a/src/Handler/PrintCenter.hs +++ b/src/Handler/PrintCenter.hs @@ -25,7 +25,8 @@ import qualified Database.Esqueleto.Legacy as E import qualified Database.Esqueleto.Utils as E import Database.Esqueleto.Utils.TH -import Utils.Print +import Utils.Print hiding (LetterRenewQualificationF) +import Utils.Print.RenewQualification import qualified Data.Aeson as Aeson -- import qualified Data.Text as Text @@ -82,7 +83,7 @@ lrqf2letter LRQF{..} usr <- getUser lrqfUser rcvr <- mapM getUser lrqfSuper now <- liftIO getCurrentTime - let letter = LetterRenewQualificationF + let letter = LetterRenewQualification { lmsLogin = lrqfIdent , lmsPin = lrqfPin , qualHolderID = usr ^. _entityKey diff --git a/src/Utils/Print.hs b/src/Utils/Print.hs index 6f3f19f0a..9b6bea074 100644 --- a/src/Utils/Print.hs +++ b/src/Utils/Print.hs @@ -23,6 +23,7 @@ module Utils.Print -- , MDLetter , SomeLetter(..) , LetterRenewQualificationF(..) + -- , LetterRenewQualification(..) , LetterExpireQualification(..) -- , LetterCourseCertificate() , makeCourseCertificates @@ -59,7 +60,8 @@ import Jobs.Handler.SendNotification.Utils import Utils.Print.Instances () import Utils.Print.Letters import Utils.Print.SomeLetter -import Utils.Print.RenewQualification +import Utils.Print.RenewQualificationF +import Utils.Print.RenewQualification() import Utils.Print.ExpireQualification import Utils.Print.CourseCertificate diff --git a/src/Utils/Print/Letters.hs b/src/Utils/Print/Letters.hs index 0718a294b..58715bd1b 100644 --- a/src/Utils/Print/Letters.hs +++ b/src/Utils/Print/Letters.hs @@ -129,6 +129,7 @@ defWriterOpts t = def { P.writerExtensions = P.pandocExtensions, P.writerTemplat data LetterKind = Din5008 -- scrlttr2: Standard postal letter with address field, expects peprinted FraportLogo | PinLetter -- Like Din5008, but for special paper with a protected pin field + | PinNew -- New Variant for Pin Letters for R. TODO: Remove/rename/replace PinLetter | Plain -- scrartcl: Empty, expects empty paper with no preprints | PlainLogo -- Like plain, but expects to be printed on paper with Logo -- | Logo -- Like plain, but prints Fraport Logo in the upper right corner @@ -139,15 +140,18 @@ templateLatex = let tDin5008 = decodeUtf8 $(Data.FileEmbed.embedFile "templates/letter/din5008.latex") tPinLetter = decodeUtf8 $(Data.FileEmbed.embedFile "templates/letter/din5008with_pin.latex") + tPinNew = decodeUtf8 $(Data.FileEmbed.embedFile "templates/letter/din5008with_pin_new.latex") tPlain = decodeUtf8 $(Data.FileEmbed.embedFile "templates/letter/plain_article.latex") in \case PinLetter -> tPinLetter + PinNew -> tPinNew Din5008 -> tDin5008 PlainLogo -> tPlain Plain -> tPlain paperKind :: LetterKind -> Text -- Muss genau 5 Zeichen haben! paperKind PinLetter = "a4pin" -- Pin-Brief +paperKind PinNew = "a4pin" -- Pin-Brief paperKind Plain = "a4wht" -- Ohne Logo paperKind Din5008 = "a4log" -- Mit Logo paperKind PlainLogo = "a4log" diff --git a/src/Utils/Print/RenewQualification.hs b/src/Utils/Print/RenewQualification.hs index db417b9b6..ae9692541 100644 --- a/src/Utils/Print/RenewQualification.hs +++ b/src/Utils/Print/RenewQualification.hs @@ -19,7 +19,7 @@ import Utils.Print.Letters import Handler.Utils.Widgets (nameHtml) -- , nameHtml') -data LetterRenewQualificationF = LetterRenewQualificationF +data LetterRenewQualification = LetterRenewQualification { lmsLogin :: LmsIdent , lmsPin :: Text , qualHolderID :: UserId @@ -37,30 +37,31 @@ data LetterRenewQualificationF = LetterRenewQualificationF -- this datatype is specific to this letter only, and just to avoid code duplication for derived data or constants -data LetterRenewQualificationFData = LetterRenewQualificationFData { lmsUrl, lmsUrlLogin, lmsIdent :: Text } +data LetterRenewQualificationData = LetterRenewQualificationData { lmsUrl, lmsUrlLogin, lmsIdent :: Text } deriving (Eq, Show) -letterRenewalQualificationFData :: LetterRenewQualificationF -> LetterRenewQualificationFData -letterRenewalQualificationFData LetterRenewQualificationF{lmsLogin} = LetterRenewQualificationFData{..} +letterRenewalQualificationFData :: LetterRenewQualification -> LetterRenewQualificationData +letterRenewalQualificationFData LetterRenewQualification{lmsLogin} = LetterRenewQualificationData{..} where - lmsUrl = "https://drive.fraport.de" - lmsUrlLogin = lmsUrl <> "/?login=" <> lmsIdent + lmsUrl = "drive.fraport.de" + lmsUrlLogin = "https://" <> lmsUrl <> "/?login=" <> lmsIdent lmsIdent = getLmsIdent lmsLogin -instance MDLetter LetterRenewQualificationF where +instance MDLetter LetterRenewQualification where encryptPDFfor _ = PasswordUnderling - getLetterKind _ = PinLetter + getLetterKind _ = PinNew getLetterEnvelope _ = 'f' -- maybe 'q' (Char.toLower . fst) $ Text.uncons (qualShort l) - getTemplate _ = decodeUtf8 $(Data.FileEmbed.embedFile "templates/letter/fraport_renewal.md") + getTemplate _ = decodeUtf8 $(Data.FileEmbed.embedFile "templates/letter/fraport_renewal_new.md") getMailSubject l = SomeMessage $ MsgMailSubjectQualificationRenewal $ qualShort l - getMailBody l@LetterRenewQualificationF{..} = Just $ \DateTimeFormatter{ format } -> - let LetterRenewQualificationFData{..} = letterRenewalQualificationFData l + getMailBody l@LetterRenewQualification{..} = Just $ \DateTimeFormatter{ format } -> + let LetterRenewQualificationData{..} = letterRenewalQualificationFData l in $(ihamletFile "templates/mail/body/qualificationRenewal.hamlet") - letterMeta l@LetterRenewQualificationF{..} DateTimeFormatter{ format } lang Entity{entityKey=rcvrId, entityVal=User{userDisplayName}} = - let LetterRenewQualificationFData{..} = letterRenewalQualificationFData l + letterMeta l@LetterRenewQualification{..} DateTimeFormatter{ format } lang Entity{entityKey=rcvrId, entityVal=User{userDisplayName}} = + let LetterRenewQualificationData{..} = letterRenewalQualificationFData l isSupervised = rcvrId /= qualHolderID + newExpire = addDays (fromIntegral $ fromMaybe 0 qualDuration) qualExpiry in mkMeta $ guardMonoid isSupervised [ toMeta "supervisor" userDisplayName @@ -79,10 +80,15 @@ instance MDLetter LetterRenewQualificationF where , mbMeta "validduration" (show <$> qualDuration) , toMeta "url-text" lmsUrl , toMeta "url" lmsUrlLogin + , toMeta "notice" [ [st|Ein Zertifikat für Ihre Unterlagen kann nur direkt nach dem erfolgreichen Test erstellt werden. Das Zertifikat wird auf die Benutzerkennung ausgestellt. Zusammen mit diesem Schreiben können Sie Ihrem Arbeitgeber zeigen, dass Sie bestanden haben. Bei erfolgreichem Abschluss der Schulung verlängert sich das Ablaufdatum automatisch auf den #{format SelFormatDate newExpire}. Wir empfehlen die Schulung zeitnah durchzuführen. Sollte bis zum Ablaufdatum das E-Learning nicht erfolgreich abgeschlossen sein oder der Test nach 5 Versuchen nicht bestanden werden, muss zur Wiedererlangung der Fahrberechtigung „#{qualShort}“ ein Grundkurs #{qualName} bei der Fahrerausbildung absolviert werden.|] + , "Benötigen Sie die Fahrberechtigung nicht mehr, informieren Sie bitte die Fahrerausbildung."::Text + , "(Please contact us if you prefer letters in English.)" + ] + , toMeta "de-subject" [st|Verlängerung Fahrberechtigung „#{qualShort}“ (#{qualName})|] + , toMeta "en-subject" [st|Renewal of driving licence „#{qualShort}“ (#{qualName})|] + ] -- TODO use [st|some simple text with interpolation|] - ] - - getPJId LetterRenewQualificationF{..} = + getPJId LetterRenewQualification{..} = PrintJobIdentification { pjiName = bool "Renewal" "Renewal Reminder" isReminder , pjiApcAcknowledge = "lms-" <> getLmsIdent lmsLogin diff --git a/src/Utils/Print/RenewQualificationF.hs b/src/Utils/Print/RenewQualificationF.hs new file mode 100644 index 000000000..b2c5338b8 --- /dev/null +++ b/src/Utils/Print/RenewQualificationF.hs @@ -0,0 +1,100 @@ +-- SPDX-FileCopyrightText: 2023 Steffen Jost +-- +-- SPDX-License-Identifier: AGPL-3.0-or-later + +{-# OPTIONS_GHC -fno-warn-unused-top-binds #-} + +module Utils.Print.RenewQualificationF where + +import Import +import Text.Hamlet + +-- import Data.Char as Char +-- import qualified Data.Text as Text +import qualified Data.CaseInsensitive as CI + +import Data.FileEmbed (embedFile) + +import Utils.Print.Letters +import Handler.Utils.Widgets (nameHtml) -- , nameHtml') + + +data LetterRenewQualificationF = LetterRenewQualificationF + { lmsLogin :: LmsIdent + , lmsPin :: Text + , qualHolderID :: UserId + , qualHolderDN :: UserDisplayName + , qualHolderSN :: UserSurname + , qualExpiry :: Day + , qualId :: QualificationId + , qualName :: Text + , qualShort :: Text + , qualSchool :: SchoolId + , qualDuration :: Maybe Int + , isReminder :: Bool + } + deriving (Eq, Show) + + +-- this datatype is specific to this letter only, and just to avoid code duplication for derived data or constants +data LetterRenewQualificationFData = LetterRenewQualificationFData { lmsUrl, lmsUrlLogin, lmsIdent :: Text } + deriving (Eq, Show) + +letterRenewalQualificationFData :: LetterRenewQualificationF -> LetterRenewQualificationFData +letterRenewalQualificationFData LetterRenewQualificationF{lmsLogin} = LetterRenewQualificationFData{..} + where + lmsUrl = "https://drive.fraport.de" + lmsUrlLogin = lmsUrl <> "/?login=" <> lmsIdent + lmsIdent = getLmsIdent lmsLogin + + +instance MDLetter LetterRenewQualificationF where + encryptPDFfor _ = PasswordUnderling + getLetterKind _ = PinLetter + getLetterEnvelope _ = 'f' -- maybe 'q' (Char.toLower . fst) $ Text.uncons (qualShort l) + getTemplate _ = decodeUtf8 $(Data.FileEmbed.embedFile "templates/letter/fraport_renewal.md") + getMailSubject l = SomeMessage $ MsgMailSubjectQualificationRenewal $ qualShort l + getMailBody l@LetterRenewQualificationF{..} = Just $ \DateTimeFormatter{ format } -> + let LetterRenewQualificationFData{..} = letterRenewalQualificationFData l + in $(ihamletFile "templates/mail/body/qualificationRenewal.hamlet") + + letterMeta l@LetterRenewQualificationF{..} DateTimeFormatter{ format } lang Entity{entityKey=rcvrId, entityVal=User{userDisplayName}} = + let LetterRenewQualificationFData{..} = letterRenewalQualificationFData l + isSupervised = rcvrId /= qualHolderID + in mkMeta $ + guardMonoid isSupervised + [ toMeta "supervisor" userDisplayName + , toMeta "de-opening" ("Sehr geehrte Damen und Herren,"::Text) + , toMeta "en-opening" ("Dear Sir or Madam,"::Text) + ] <> + guardMonoid isReminder + [ toMeta "reminder" ("reminder"::Text) + ] <> + [ toMeta "lang" lang + , toMeta "login" lmsIdent + , toMeta "pin" lmsPin + , toMeta "examinee" qualHolderDN + , toMeta "subject-meta" qualHolderDN + , toMeta "expiry" (format SelFormatDate qualExpiry) + , mbMeta "validduration" (show <$> qualDuration) + , toMeta "url-text" lmsUrl + , toMeta "url" lmsUrlLogin + + ] + + getPJId LetterRenewQualificationF{..} = + PrintJobIdentification + { pjiName = bool "Renewal" "Renewal Reminder" isReminder + , pjiApcAcknowledge = "lms-" <> getLmsIdent lmsLogin + , pjiRecipient = Nothing -- to be filled later + , pjiSender = Nothing + , pjiCourse = Nothing + , pjiQualification = Just qualId + , pjiLmsUser = Just lmsLogin + , pjiFileName = "renew_" <> CI.original (unSchoolKey qualSchool) <> "-" <> qualShort <> "_" <> qualHolderSN + -- let nameRecipient = abbrvName <$> recipient + -- nameSender = abbrvName <$> sender + -- nameCourse = CI.original . courseShorthand <$> course + -- nameQuali = CI.original . qualificationShorthand <$> quali + -- in .. = T.replace " " "-" (T.intercalate "_" . catMaybes $ [Just printJobName, nameQuali, nameCourse, nameSender, nameRecipient]) + } \ No newline at end of file diff --git a/templates/letter/din5008with_pin_new.latex b/templates/letter/din5008with_pin_new.latex new file mode 100644 index 000000000..83eaf63fd --- /dev/null +++ b/templates/letter/din5008with_pin_new.latex @@ -0,0 +1,206 @@ +%Based upon https://github.com/benedictdudel/pandoc-letter-din5008 +\documentclass[ + paper=A4, + foldmarks=BTm, % show foldmarks top, middle, bottom + foldmarks=false, % don't print foldmarks + fromalign=left, % letter head on the right + fromphone=true, % show phone number + fromemail=true, % show email + fromlogo=false, % don't show logo in letter head + version=last, % latest version of KOMA letter + pagenumber=botright, % show pagenumbers on bottom right + firstfoot=false % first-page footer +]{scrlttr2} + +\PassOptionsToPackage{hyphens}{url} +\PassOptionsToPackage{unicode$for(hyperrefoptions)$,$hyperrefoptions$$endfor$}{hyperref} +\IfFileExists{xurl.sty}{\usepackage{xurl}}{} % add URL line breaks if available +\IfFileExists{bookmark.sty}{\usepackage{bookmark}}{\usepackage{hyperref}} +\hypersetup{ +$if(subject-meta)$ + pdfsubject={$subject-meta$}, +$endif$ +$if(author-meta)$ + pdfauthor={$author-meta$}, +$endif$ +$if(lang)$ + pdflang={$lang$}, +$endif$ +$if(is-de)$ + $if(de-subject)$ + pdftitle={$de-subject$}, + $endif$ +$else$ + $if(en-subject)$ + pdftitle={$en-subject$}, + $endif$ +$endif$ +$if(apc-ident)$ + pdfkeywords={$apc-ident$}, +$endif$ +} +\usepackage{url} + +\usepackage{iftex} + +%\usepackage[ngerman]{babel} +$if(lang)$ +\ifLuaTeX +\usepackage[bidi=basic]{babel} +\else +\usepackage[bidi=default]{babel} +\fi +\babelprovide[main,import]{$babel-lang$} +$for(babel-otherlangs)$ +\babelprovide[import]{$babel-otherlangs$} +$endfor$ +% get rid of language-specific shorthands (see #6817): +\let\LanguageShortHands\languageshorthands +\def\languageshorthands#1{} +$endif$ + +\ifLuaTeX + \usepackage{selnolig} % disable illegal ligatures +\fi + +\usepackage[sfdefault]{roboto} + +\ifPDFTeX + \usepackage[$if(fontenc)$$fontenc$$else$T1$endif$]{fontenc} + \usepackage[utf8]{inputenc} + \usepackage{textcomp} % provide euro and other symbols + % \usepackage{DejaVuSansMono} % better monofont +\else + % if luatex or xetex + \usepackage{fontspec} + % \setmonofont{DejaVu Sans Mono} +\fi +\renewcommand{\familydefault}{\sfdefault} + +$if(mathspec)$ + \ifXeTeX + \usepackage{mathspec} + \else + \usepackage{unicode-math} + \fi +$else$ + \usepackage{unicode-math} +$endif$ + +%\usepackage[a4paper, bottom=8cm, top=3cm]{geometry} %%% THIS HAD NO EFFECT AT ALL + +\usepackage{parskip}% might be useful for pandoc tightlist + +\usepackage{graphics} +\usepackage{xcolor} + +\usepackage{booktabs} +\usepackage{longtable} + +\usepackage[right]{eurosym} + +\usepackage{enumitem} + +\makeatletter + \setplength{firstheadvpos}{1.8cm} + \setplength{toaddrvpos}{5.5cm} + \setlength{\@tempskipa}{-1.2cm}% + \@addtoplength{toaddrheight}{\@tempskipa} +\makeatother + +\setlength{\oddsidemargin}{\useplength{toaddrhpos}} +\addtolength{\oddsidemargin}{-1in} +\setlength{\textwidth}{\useplength{firstheadwidth}} + +\usepackage[absolute,quiet,overlay]{textpos}%,showboxes +\setlength{\TPHorizModule}{1mm} +\setlength{\TPVertModule}{1mm} + +\providecommand{\tightlist}{% + \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}} + +\begin{document}% + \setkomavar{fromname}{$author$}% + \renewcommand*{\raggedsignature}{\raggedright}% + \setkomavar{fromaddress}{% + $for(return-address)$% + $return-address$$sep$\\ + $endfor$ + } + \setkomavar{fromphone}{$phone$} + \setkomavar{fromemail}{$email$} + %if there is a handwritten signature + %\setkomavar{signature}{$author$} + %if there is no handwritten signature + \setkomavar{signature}{} + \setplength{sigbeforevskip}{-\baselineskip} + + \setkomavar{date}{$date$} + \setkomavar{place}{$place$} + + $if(is-de)$ + \setkomavar{subject}{$de-subject$} + $else$ + \setkomavar{subject}{$en-subject$} + $endif$ + + \begin{letter}{% + $for(address)$ + $address$$sep$\\ + $endfor$ + } + + $if(apc-ident)$ + \begin{textblock}{200}(5,5)%hpos,vpos + \textcolor{white!0}{$apc-ident$}% + \end{textblock}% + $endif$ + + $if(is-de)$ + \opening{$de-opening$} + $else$ + \opening{$en-opening$} + $endif$ + + \begin{textblock}{65}(84,232)%hpos,vpos + \textcolor{black!39}{ + \begin{labeling}{Password:}%Achtung! Die Position des Logins muss sprachunabhängig immer an der gleichen Position sein, sonst kannn die Rückmeldung der Druckerei den Ident nicht mehr identifizieren! + $if(is-de)$ + \item[Benutzer:] \texttt{$login$} + \item[Passwort:] \texttt{$pin$} + $else$ + \item[User:] \texttt{$login$} + \item[Password:] \texttt{$pin$} + $endif$ + \end{labeling} + ~} + \end{textblock} + + $body$ + + $if(is-de)$ + \closing{$de-closing$} + $else$ + \closing{$en-closing$} + $endif$ + + %\ps $postskriptum$ + + $if(encludes)$ + \setkomavar*{enclseparator}{Anlage} + \encl{$encludes$} + $endif$ + + $if(notice)$ + \begin{textblock}{170}(20,258)%hpos,vpos + \scriptsize + \textbf{Hinweise für den Schulungsteilnehmer:} + \newline + $for(notice)$ + $notice$ + $sep$\newline + $endfor$ + \end{textblock} + $endif$ + \end{letter} +\end{document} diff --git a/templates/letter/fraport_renewal.md b/templates/letter/fraport_renewal.md index 930370547..cf7ea0a5d 100644 --- a/templates/letter/fraport_renewal.md +++ b/templates/letter/fraport_renewal.md @@ -86,6 +86,8 @@ $else$ $endif$ Die Durchführung des Lernprogramms und des Abschlusstests dauert etwa 2,5h. +This is the new version + Fahrberechtigungsinhaber : $examinee$ diff --git a/templates/letter/fraport_renewal_new.md b/templates/letter/fraport_renewal_new.md new file mode 100644 index 000000000..e90db735b --- /dev/null +++ b/templates/letter/fraport_renewal_new.md @@ -0,0 +1,130 @@ +--- +### Metadaten, welche hier eingestellt werden: +# Absender +de-subject: 'Verlängerung Fahrberechtigung "F" (Vorfeldführerschein)' +en-subject: Renewal of apron driving license +author: Fraport AG - Fahrerausbildung (AVN-AR) +phone: +49 69 690-30306 +email: fahrerausbildung@fraport.de +place: Frankfurt am Main +return-address: + - 60547 Frankfurt +de-opening: Liebe Fahrberechtigungsinhaber, +en-opening: Dear driver, +de-closing: | + Mit freundlichen Grüßen, + Ihre Fraport Fahrerausbildung +en-closing: | + With kind regards, + Your Fraport Driver Training +encludes: +hyperrefoptions: hidelinks + +### Metadaten, welche automatisch ersetzt werden: +url-text: 'drive.fraport.de' +url: 'https://drive.fraport.de' +date: 11.11.1111 +expiry: 00.00.0000 +lang: de-de +is-de: true +login: 123456 +pin: abcdef +paper: pin +# Emfpänger +examinee: P. Rüfling +address: + - E. M. Pfänger + - Musterfirma GmbH + - Musterstraße 11 + - 12345 Musterstadt +... +$if(titleblock)$ +$titleblock$ + +$endif$ +$for(header-includes)$ +$header-includes$ + +$endfor$ +$for(include-before)$ +$include-before$ + +$endfor$ + +$if(is-de)$ + + + +um die Rollfeldfahrberechtigung von \textbf{$examinee$} zu erhalten, benötigen wir bis zum $date$ den Nachweis, dass die theoretische und praktische flughafenspezifische Rollfeld Recurrent Schulung der Fraport AG gemäß Verordnung der Europäische Union Nr. 139/2014 absolviert wurde. + +Die Online-Schulung der Fraport AG ist erreichbar unter folgendem Link: +[$url-text$]($url$) + +Der erforderliche Benutzername und das Passwort für die Fraport Online-Schulung finden Sie untenstehend. Die Weitergabe der persönlichen Benutzerdaten an Dritte ist untersagt. Ausschließlich Sie sind berechtigt, die Benutzerdaten an den Schulungsteilnehmer auszuhändigen. + +Für die Absolvierung der Schulungsmaßnahme werden 1-2 Stunden benötigt. Der Abschluss der Schulung wird automatisch an das System der Fahrerausbildung übermittelt. + +Nach erfolgreichem Abschluss der Online-Schulung muss \textbf{$examinee$} sich von Ihrer Firma zum praktischen Teil der Schulung einplanen lassen. Im Rahmen der 3--4-stündigen praktischen Auffrischung erfolgen Funkübungen sowie die Durchführung einer Übungsfahrt mit Prüfungscharakter im Start-/Landebahnsystem. + +$else$ + + +$if(reminder)$ + this is a last **reminder**: as of $date$, +$if(supervisor)$ + $examinee$ has +$else$ + you have +$endif$ + not yet completed the below detailed e‑learning. + The qualification will expire automatically, + if the e‑learning is not concluded in time! +$else$ +$if(supervisor)$ + the apron diving license of $examinee$ +$else$ + your apron diving license +$endif$ + is about to expire soon. +$endif$ +The validity will be extended +$if(validduration)$ + by $validduration$ months +$endif$ +by successfully participating in +an e‑learning. +$if(supervisor)$ + Supervisors are kindly requested to forward the login data + below confidentially to the examinee. +$else$ + Please use the login data from the protected area below. +$endif$ +Reserve 2.5h for the entire e-learning, including the exam. + +Examinee + + : $examinee$ + +Expiry + + : $expiry$ + +E-learning website + + : [$url-text$]($url$) + + +If the apron driving license expires before completing this e-learning, +$if(supervisor)$ + the examinee has to participate in a basic training course again to regain + to regain the apron driving licence. +$else$ + you have to participate in a basic training course again to regain + your apron driving licence. +$endif$ + + +Please contact the Fraport driving school team, if you need any assistance. +(Kontaktieren Sie uns bitte, wenn Sie zukünftige Briefe in deutscher Sprache bevorzugen.) + +$endif$ diff --git a/uniworx.cabal.bak b/uniworx.cabal.bak deleted file mode 100644 index 58d80a244..000000000 --- a/uniworx.cabal.bak +++ /dev/null @@ -1,2137 +0,0 @@ -cabal-version: 1.12 - --- This file has been generated from package.yaml by hpack version 0.35.0. --- --- see: https://github.com/sol/hpack - -name: uniworx -version: 27.4.58 -build-type: Simple -data-files: - testdata/AbgabeH10-1.hs - testdata/avs_json.hs - testdata/fradrive_f_results_2022051910.csv - testdata/fradrive_f_results_2022051910.csv.license - testdata/H10-2.hs - testdata/H10-3.hs - testdata/ProMo_Uebung10.pdf - testdata/ProMo_Uebung10.pdf.license - testdata/test.pdf - testdata/test.pdf.license - testdata/test_letters.hs - testdata/test_results.csv - testdata/test_results.csv.license - -flag dev - description: Turn on development settings, like auto-reload templates. - manual: False - default: False - -flag library-only - description: Build for use with "yesod devel" - manual: False - default: False - -flag pedantic - description: Be very pedantic about warnings and errors - manual: False - default: True - -library - exposed-modules: - Application - Audit - Audit.Types - Auth.Dummy - Auth.LDAP - Auth.LDAP.AD - Auth.PWHash - Colonnade.Instances - Control.Arrow.Instances - Control.Monad.Catch.Instances - Control.Monad.Trans.Except.Instances - Control.Monad.Trans.Memo.StateCache.Instances - Control.Monad.Trans.Random.Instances - Cron - Cron.Types - Crypto.Hash.Instances - Crypto.Random.Instances - CryptoID - CryptoID.Cached - CryptoID.TH - Data.Aeson.Types.Instances - Data.Bool.Instances - Data.CaseInsensitive.Instances - Data.CryptoID.Instances - Data.Encoding.Instances - Data.Fixed.Instances - Data.HashSet.Instances - Data.Maybe.Instances - Data.Monoid.Instances - Data.MonoTraversable.Instances - Data.MultiSet.Instances - Data.NonNull.Instances - Data.Scientific.Instances - Data.SemVer.Instances - Data.Set.Instances - Data.Sum.Instances - Data.Time.Calendar.Instances - Data.Time.Clock.Instances - Data.Time.Clock.Instances.TH - Data.Time.Format.Instances - Data.Time.LocalTime.Instances - Data.Universe.Instances.Reverse.Hashable - Data.Universe.Instances.Reverse.JSON - Data.Universe.Instances.Reverse.MonoTraversable - Data.Universe.Instances.Reverse.WithIndex - Data.Universe.TH - Data.UUID.Instances - Data.Void.Instances - Data.Word.Word24.Instances - Database.Esqueleto.Instances - Database.Esqueleto.Utils - Database.Esqueleto.Utils.TH - Database.Persist.Class.Instances - Database.Persist.Sql.Types.Instances - Database.Persist.TH.Directory - Database.Persist.Types.Instances - Foundation - Foundation.Authorization - Foundation.DB - Foundation.I18n - Foundation.I18n.TH - Foundation.Instances - Foundation.Instances.ButtonClass - Foundation.Navigation - Foundation.Routes - Foundation.Routes.Definitions - Foundation.Servant - Foundation.Servant.Types - Foundation.SiteLayout - Foundation.Type - Foundation.Types - Foundation.Yesod.Auth - Foundation.Yesod.ErrorHandler - Foundation.Yesod.Middleware - Foundation.Yesod.Persist - Foundation.Yesod.Session - Foundation.Yesod.StaticContent - Handler.Admin - Handler.Admin.Avs - Handler.Admin.Crontab - Handler.Admin.ErrorMessage - Handler.Admin.Ldap - Handler.Admin.Test - Handler.Admin.Test.Download - Handler.Admin.Tokens - Handler.ApiDocs - Handler.Course - Handler.Course.Communication - Handler.Course.Delete - Handler.Course.Edit - Handler.Course.Events - Handler.Course.Events.Delete - Handler.Course.Events.Edit - Handler.Course.Events.Form - Handler.Course.Events.New - Handler.Course.LecturerInvite - Handler.Course.List - Handler.Course.News - Handler.Course.News.Delete - Handler.Course.News.Download - Handler.Course.News.Edit - Handler.Course.News.Form - Handler.Course.News.New - Handler.Course.News.Show - Handler.Course.ParticipantInvite - Handler.Course.Register - Handler.Course.Show - Handler.Course.User - Handler.Course.Users - Handler.CryptoIDDispatch - Handler.Error - Handler.Exam - Handler.Exam.AddUser - Handler.Exam.AutoOccurrence - Handler.Exam.Correct - Handler.Exam.CorrectorInvite - Handler.Exam.Edit - Handler.Exam.Form - Handler.Exam.List - Handler.Exam.New - Handler.Exam.Register - Handler.Exam.RegistrationInvite - Handler.Exam.Show - Handler.Exam.Users - Handler.ExamOffice - Handler.ExamOffice.Course - Handler.ExamOffice.Exam - Handler.ExamOffice.Exams - Handler.ExamOffice.ExternalExam - Handler.ExamOffice.Fields - Handler.ExamOffice.Users - Handler.ExternalExam - Handler.ExternalExam.Correct - Handler.ExternalExam.Edit - Handler.ExternalExam.Form - Handler.ExternalExam.List - Handler.ExternalExam.New - Handler.ExternalExam.Show - Handler.ExternalExam.StaffInvite - Handler.ExternalExam.Users - Handler.Firm - Handler.Health - Handler.Health.Interface - Handler.Help - Handler.Info - Handler.Info.TH - Handler.LMS - Handler.LMS.Fake - Handler.LMS.Learners - Handler.LMS.Report - Handler.LMS.Users - Handler.Material - Handler.Metrics - Handler.News - Handler.Participants - Handler.PrintCenter - Handler.Profile - Handler.Qualification - Handler.SAP - Handler.School - Handler.Sheet - Handler.Sheet.CorrectorInvite - Handler.Sheet.Current - Handler.Sheet.Delete - Handler.Sheet.Download - Handler.Sheet.Edit - Handler.Sheet.Form - Handler.Sheet.List - Handler.Sheet.New - Handler.Sheet.PersonalisedFiles - Handler.Sheet.PersonalisedFiles.Meta - Handler.Sheet.PersonalisedFiles.Types - Handler.Sheet.Pseudonym - Handler.Sheet.Show - Handler.StorageKey - Handler.Submission - Handler.Submission.Assign - Handler.Submission.AuthorshipStatements - Handler.Submission.Correction - Handler.Submission.Create - Handler.Submission.Delete - Handler.Submission.Download - Handler.Submission.Grade - Handler.Submission.Helper - Handler.Submission.Helper.ArchiveTable - Handler.Submission.List - Handler.Submission.New - Handler.Submission.Show - Handler.Submission.SubmissionUserInvite - Handler.Submission.Upload - Handler.Swagger - Handler.SystemMessage - Handler.Term - Handler.Tutorial - Handler.Tutorial.Communication - Handler.Tutorial.Delete - Handler.Tutorial.Edit - Handler.Tutorial.Form - Handler.Tutorial.List - Handler.Tutorial.New - Handler.Tutorial.Register - Handler.Tutorial.TutorInvite - Handler.Tutorial.Users - Handler.Upload - Handler.Users - Handler.Users.Add - Handler.Utils - Handler.Utils.AuthorshipStatement - Handler.Utils.Avs - Handler.Utils.Communication - Handler.Utils.Company - Handler.Utils.Concurrent - Handler.Utils.ContentDisposition - Handler.Utils.Corrections - Handler.Utils.Course - Handler.Utils.Csv - Handler.Utils.Database - Handler.Utils.DateTime - Handler.Utils.Delete - Handler.Utils.Download - Handler.Utils.Exam - Handler.Utils.ExamOffice.Course - Handler.Utils.ExamOffice.Exam - Handler.Utils.ExamOffice.ExternalExam - Handler.Utils.ExternalExam - Handler.Utils.ExternalExam.Users - Handler.Utils.Files - Handler.Utils.Form - Handler.Utils.Form.MassInput - Handler.Utils.Form.MassInput.Liveliness - Handler.Utils.Form.MassInput.TH - Handler.Utils.Form.Occurrences - Handler.Utils.Form.Types - Handler.Utils.I18n - Handler.Utils.Invitations - Handler.Utils.LdapSystemFunctions - Handler.Utils.LMS - Handler.Utils.Mail - Handler.Utils.Memcached - Handler.Utils.Minio - Handler.Utils.News - Handler.Utils.Occurrences - Handler.Utils.Pandoc - Handler.Utils.Profile - Handler.Utils.Qualification - Handler.Utils.Random - Handler.Utils.Rating - Handler.Utils.Rating.Format - Handler.Utils.Rating.Format.Legacy - Handler.Utils.Routes - Handler.Utils.Sheet - Handler.Utils.SheetType - Handler.Utils.StudyFeatures - Handler.Utils.Submission - Handler.Utils.Table - Handler.Utils.Table.Cells - Handler.Utils.Table.Columns - Handler.Utils.Table.Pagination - Handler.Utils.Table.Pagination.CsvColumnExplanations - Handler.Utils.Table.Pagination.Types - Handler.Utils.Term - Handler.Utils.TermCandidates - Handler.Utils.Tutorial - Handler.Utils.Users - Handler.Utils.Widgets - Handler.Utils.Zip - Import - Import.NoFoundation - Import.NoModel - Import.Servant - Import.Servant.NoFoundation - Jobs - Jobs.Crontab - Jobs.Handler.ChangeUserDisplayEmail - Jobs.Handler.DistributeCorrections - Jobs.Handler.ExternalApis - Jobs.Handler.Files - Jobs.Handler.HelpRequest - Jobs.Handler.Intervals.Utils - Jobs.Handler.Invitation - Jobs.Handler.LMS - Jobs.Handler.PersonalisedSheetFiles - Jobs.Handler.Print - Jobs.Handler.PruneInvitations - Jobs.Handler.PruneOldSentMails - Jobs.Handler.QueueNotification - Jobs.Handler.SendCourseCommunication - Jobs.Handler.SendNotification - Jobs.Handler.SendNotification.CorrectionsAssigned - Jobs.Handler.SendNotification.CorrectionsNotDistributed - Jobs.Handler.SendNotification.CourseRegistered - Jobs.Handler.SendNotification.ExamActive - Jobs.Handler.SendNotification.ExamOffice - Jobs.Handler.SendNotification.ExamResult - Jobs.Handler.SendNotification.Qualification - Jobs.Handler.SendNotification.SheetActive - Jobs.Handler.SendNotification.SheetInactive - Jobs.Handler.SendNotification.SubmissionEdited - Jobs.Handler.SendNotification.SubmissionRated - Jobs.Handler.SendNotification.UserAuthModeUpdate - Jobs.Handler.SendNotification.UserRightsUpdate - Jobs.Handler.SendNotification.Utils - Jobs.Handler.SendPasswordReset - Jobs.Handler.SendTestEmail - Jobs.Handler.SetLogSettings - Jobs.Handler.StudyFeatures - Jobs.Handler.SynchroniseAvs - Jobs.Handler.SynchroniseLdap - Jobs.Handler.TransactionLog - Jobs.HealthReport - Jobs.Offload - Jobs.Queue - Jobs.Types - Jose.Jwk.Instances - Jose.Jwt.Instances - Language.Haskell.TH.Instances - Ldap.Client.Instances - Ldap.Client.Pool - Mail - Model - Model.Migration - Model.Migration.Definitions - Model.Migration.Types - Model.Migration.Version - Model.Rating - Model.Submission - Model.Tokens - Model.Tokens.Bearer - Model.Tokens.Lens - Model.Tokens.Session - Model.Tokens.Upload - Model.Types - Model.Types.Apis - Model.Types.Avs - Model.Types.Changelog - Model.Types.Common - Model.Types.Communication - Model.Types.Course - Model.Types.Csv - Model.Types.DateTime - Model.Types.Exam - Model.Types.ExamOffice - Model.Types.File - Model.Types.Health - Model.Types.Languages - Model.Types.Lms - Model.Types.Mail - Model.Types.Markup - Model.Types.Misc - Model.Types.Room - Model.Types.School - Model.Types.Security - Model.Types.Sheet - Model.Types.Submission - Model.Types.SystemMessage - Model.Types.TH.Binary - Model.Types.TH.JSON - Model.Types.TH.PathPiece - Model.Types.TH.Wordlist - Model.Types.Upload - Model.Types.User - Network.HTTP.Types.Method.Instances - Network.IP.Addr.Instances - Network.Mail.Mime.Instances - Network.Mime.TH - Network.Minio.Instances - Network.URI.Instances - Numeric.Natural.Instances - Prometheus.Instances - Servant.Client.Core.BaseUrl.Instances - Servant.Docs.Internal.Pretty.Instances - Servant.Server.Instances - ServantApi - ServantApi.ExternalApis - ServantApi.ExternalApis.Type - Settings - Settings.Cluster - Settings.Cluster.Volatile - Settings.Cookies - Settings.Locale - Settings.Log - Settings.Mime - Settings.StaticFiles - Settings.StaticFiles.Generator - Settings.StaticFiles.Webpack - Settings.WellKnownFiles - Settings.WellKnownFiles.TH - System.Clock.Instances - System.FilePath.Glob.TH - System.FilePath.Instances - Text.Blaze.Instances - Text.Shakespeare.Text.Instances - UnliftIO.Async.Utils - Utils - Utils.Approot - Utils.ARC - Utils.Auth - Utils.Avs - Utils.Cookies - Utils.Cookies.Registered - Utils.Course - Utils.Csv - Utils.Csv.Mail - Utils.DateTime - Utils.DB - Utils.Exam.Correct - Utils.Failover - Utils.Files - Utils.Form - Utils.Frontend.I18n - Utils.Frontend.Modal - Utils.Frontend.Notification - Utils.Holidays - Utils.HttpConditional - Utils.I18n - Utils.Icon - Utils.Lang - Utils.Lens - Utils.Lens.TH - Utils.LRU - Utils.Mail - Utils.Memo - Utils.Message - Utils.Metrics - Utils.NTop - Utils.Occurrences - Utils.Pandoc - Utils.Parameters - Utils.PathPiece - Utils.Persist - Utils.PersistentTokenBucket - Utils.Pool - Utils.Postgresql - Utils.Print - Utils.Print.CourseCertificate - Utils.Print.ExpireQualification - Utils.Print.Instances - Utils.Print.Letters - Utils.Print.RenewQualification - Utils.Print.SomeLetter - Utils.Room - Utils.Route - Utils.Session - Utils.Set - Utils.Sheet - Utils.Sql - Utils.SystemMessage - Utils.Term - Utils.TH - Utils.TH.AlphaConversion - Utils.TH.Routes - Utils.Tokens - Utils.Users - Utils.VolatileClusterSettings - Utils.Widgets - Web.Cookie.Instances - Web.PathPieces.Instances - Web.ServerSession.Backend.Persistent.Memcached - Web.ServerSession.Frontend.Yesod.Jwt - Yesod.Core.Instances - Yesod.Core.Types.Instances - Yesod.Core.Types.Instances.Catch - Yesod.Form.Fields.Instances - Yesod.Form.Types.Instances - Yesod.Servant - Yesod.Servant.HttpApiDataInjective - other-modules: - Paths_uniworx - hs-source-dirs: - src - default-extensions: - OverloadedStrings - PartialTypeSignatures - ScopedTypeVariables - TemplateHaskell - QuasiQuotes - CPP - TypeSynonymInstances - KindSignatures - ConstraintKinds - ViewPatterns - TypeOperators - TupleSections - TypeFamilies - GADTs - StandaloneDeriving - RecordWildCards - RankNTypes - PatternGuards - PatternSynonyms - ParallelListComp - NumDecimals - MultiWayIf - NamedFieldPuns - NoImplicitPrelude - LambdaCase - MultiParamTypeClasses - FlexibleContexts - FlexibleInstances - FunctionalDependencies - EmptyDataDecls - ExistentialQuantification - DefaultSignatures - DeriveDataTypeable - DeriveGeneric - DeriveLift - DeriveFunctor - DeriveFoldable - DeriveTraversable - DeriveAnyClass - DerivingStrategies - DerivingVia - GeneralizedNewtypeDeriving - DataKinds - BinaryLiterals - PolyKinds - PackageImports - TypeApplications - RecursiveDo - TypeFamilyDependencies - QuantifiedConstraints - EmptyDataDeriving - StandaloneKindSignatures - NoStarIsType - other-extensions: - GeneralizedNewtypeDeriving - IncoherentInstances - OverloadedLists - UndecidableInstances - ApplicativeDo - ghc-options: -Wall -Wmissing-home-modules -Wredundant-constraints -Widentities -Wincomplete-uni-patterns -fno-warn-type-defaults -fno-warn-unrecognised-pragmas -fno-warn-partial-type-signatures -fno-max-relevant-binds -j -freduction-depth=0 -fprof-auto-calls -g - build-depends: - Glob - , HaskellNet - , HaskellNet-SSL - , HsYAML - , HsYAML-aeson - , IntervalMap - , MonadRandom - , acid-state - , aeson >=1.5 - , aeson-pretty - , array - , async - , attoparsec - , base - , base32 - , base64-bytestring - , bimap - , binary - , binary-instances - , binary-orphans - , blaze-html - , blaze-markup - , bytestring - , case-insensitive - , cassava - , cassava-conduit - , classy-prelude - , classy-prelude-yesod - , clock - , colonnade >=1.1.1 - , conduit - , conduit-resumablesink >=0.2 - , connection - , constraints - , containers - , cookie - , cryptoids - , cryptoids-class - , cryptoids-types - , cryptonite - , cryptonite-conduit - , data-default - , data-textual - , deepseq - , directory - , directory-tree - , doclayout - , doctemplates - , either - , email-validate - , encoding - , esqueleto >=3.1.0 - , exceptions - , extended-reals - , fast-logger - , fastcdc - , file-embed - , filepath - , filepath-crypto - , foreign-store - , generic-deriving - , generic-lens - , gitrev - , hashable - , haskell-src-meta - , hsass - , http-api-data - , http-client - , http-client-tls - , http-conduit - , http-types - , insert-ordered-containers - , jose-jwt - , lattices - , ldap-client - , lens - , lens-aeson - , list-t - , memcached-binary - , memory - , mime-mail - , mime-types - , minio-hs - , mmorph - , monad-control - , monad-logger - , monad-memo - , mono-traversable - , mono-traversable-keys - , mtl - , multiset - , network >=3 - , network-bsd - , network-ip - , network-uri - , nonce - , pandoc - , pandoc-types - , parsec - , parsec-numbers - , path-pieces - , persistent - , persistent-postgresql - , persistent-qq - , persistent-template - , pkcs7 - , pointedlist - , postgresql-simple - , pqueue - , profunctors - , prometheus-client - , prometheus-metrics-ghc - , psqueues - , random - , random-shuffle - , resourcet - , retry - , rfc5051 - , saltine - , scientific - , semigroupoids - , semver - , servant - , servant-client - , servant-client-core - , servant-docs - , servant-quickcheck - , servant-server - , servant-swagger - , serversession - , serversession-backend-acid-state - , shakespeare - , stm - , stm-delay - , streaming-commons - , swagger2 - , system-locale - , systemd - , tagged - , template-haskell - , text - , text-metrics - , th-abstraction - , th-lift - , th-lift-instances - , time - , token-bucket - , topograph - , transformers - , transformers-base - , typed-process - , tz - , unidecode - , universe - , universe-base - , unix - , unliftio - , unliftio-pool - , unordered-containers - , uuid - , uuid-crypto - , uuid-types - , vault - , vector - , wai - , wai-extra - , wai-logger - , wai-middleware-prometheus - , warp - , wl-pprint-text - , word24 - , xlsx - , xss-sanitize - , yaml - , yesod - , yesod-auth - , yesod-core - , yesod-form - , yesod-persistent - , yesod-static - , zip-stream - default-language: Haskell2010 - if flag(pedantic) - ghc-options: -Werror -fwarn-tabs - if flag(dev) - ghc-options: -O0 -ddump-splices -ddump-to-file -Wderiving-typeable - cpp-options: -DDEVELOPMENT - else - ghc-options: -O -fllvm +RTS -K0 -RTS - -executable uniworx - main-is: main.hs - other-modules: - DevelMain - Paths_uniworx - hs-source-dirs: - app - default-extensions: - OverloadedStrings - PartialTypeSignatures - ScopedTypeVariables - TemplateHaskell - QuasiQuotes - CPP - TypeSynonymInstances - KindSignatures - ConstraintKinds - ViewPatterns - TypeOperators - TupleSections - TypeFamilies - GADTs - StandaloneDeriving - RecordWildCards - RankNTypes - PatternGuards - PatternSynonyms - ParallelListComp - NumDecimals - MultiWayIf - NamedFieldPuns - NoImplicitPrelude - LambdaCase - MultiParamTypeClasses - FlexibleContexts - FlexibleInstances - FunctionalDependencies - EmptyDataDecls - ExistentialQuantification - DefaultSignatures - DeriveDataTypeable - DeriveGeneric - DeriveLift - DeriveFunctor - DeriveFoldable - DeriveTraversable - DeriveAnyClass - DerivingStrategies - DerivingVia - GeneralizedNewtypeDeriving - DataKinds - BinaryLiterals - PolyKinds - PackageImports - TypeApplications - RecursiveDo - TypeFamilyDependencies - QuantifiedConstraints - EmptyDataDeriving - StandaloneKindSignatures - NoStarIsType - other-extensions: - GeneralizedNewtypeDeriving - IncoherentInstances - OverloadedLists - UndecidableInstances - ApplicativeDo - ghc-options: -Wall -Wmissing-home-modules -Wredundant-constraints -Widentities -Wincomplete-uni-patterns -fno-warn-type-defaults -fno-warn-unrecognised-pragmas -fno-warn-partial-type-signatures -fno-max-relevant-binds -j -freduction-depth=0 -fprof-auto-calls -g -threaded -rtsopts "-with-rtsopts=-N -T" - build-depends: - Glob - , HaskellNet - , HaskellNet-SSL - , HsYAML - , HsYAML-aeson - , IntervalMap - , MonadRandom - , acid-state - , aeson >=1.5 - , aeson-pretty - , array - , async - , attoparsec - , base - , base32 - , base64-bytestring - , bimap - , binary - , binary-instances - , binary-orphans - , blaze-html - , blaze-markup - , bytestring - , case-insensitive - , cassava - , cassava-conduit - , classy-prelude - , classy-prelude-yesod - , clock - , colonnade >=1.1.1 - , conduit - , conduit-resumablesink >=0.2 - , connection - , constraints - , containers - , cookie - , cryptoids - , cryptoids-class - , cryptoids-types - , cryptonite - , cryptonite-conduit - , data-default - , data-textual - , deepseq - , directory - , directory-tree - , doclayout - , doctemplates - , either - , email-validate - , encoding - , esqueleto >=3.1.0 - , exceptions - , extended-reals - , fast-logger - , fastcdc - , file-embed - , filepath - , filepath-crypto - , foreign-store - , generic-deriving - , generic-lens - , gitrev - , hashable - , haskell-src-meta - , hsass - , http-api-data - , http-client - , http-client-tls - , http-conduit - , http-types - , insert-ordered-containers - , jose-jwt - , lattices - , ldap-client - , lens - , lens-aeson - , list-t - , memcached-binary - , memory - , mime-mail - , mime-types - , minio-hs - , mmorph - , monad-control - , monad-logger - , monad-memo - , mono-traversable - , mono-traversable-keys - , mtl - , multiset - , network >=3 - , network-bsd - , network-ip - , network-uri - , nonce - , pandoc - , pandoc-types - , parsec - , parsec-numbers - , path-pieces - , persistent - , persistent-postgresql - , persistent-qq - , persistent-template - , pkcs7 - , pointedlist - , postgresql-simple - , pqueue - , profunctors - , prometheus-client - , prometheus-metrics-ghc - , psqueues - , random - , random-shuffle - , resourcet - , retry - , rfc5051 - , saltine - , scientific - , semigroupoids - , semver - , servant - , servant-client - , servant-client-core - , servant-docs - , servant-quickcheck - , servant-server - , servant-swagger - , serversession - , serversession-backend-acid-state - , shakespeare - , stm - , stm-delay - , streaming-commons - , swagger2 - , system-locale - , systemd - , tagged - , template-haskell - , text - , text-metrics - , th-abstraction - , th-lift - , th-lift-instances - , time - , token-bucket - , topograph - , transformers - , transformers-base - , typed-process - , tz - , unidecode - , universe - , universe-base - , uniworx - , unix - , unliftio - , unliftio-pool - , unordered-containers - , uuid - , uuid-crypto - , uuid-types - , vault - , vector - , wai - , wai-extra - , wai-logger - , wai-middleware-prometheus - , warp - , wl-pprint-text - , word24 - , xlsx - , xss-sanitize - , yaml - , yesod - , yesod-auth - , yesod-core - , yesod-form - , yesod-persistent - , yesod-static - , zip-stream - default-language: Haskell2010 - if flag(pedantic) - ghc-options: -Werror -fwarn-tabs - if flag(dev) - ghc-options: -O0 -ddump-splices -ddump-to-file -Wderiving-typeable - cpp-options: -DDEVELOPMENT - else - ghc-options: -O -fllvm +RTS -K0 -RTS - if flag(library-only) - buildable: False - -executable uniworxdb - main-is: Database.hs - other-modules: - Database.Fill - Paths_uniworx - hs-source-dirs: - test - default-extensions: - OverloadedStrings - PartialTypeSignatures - ScopedTypeVariables - TemplateHaskell - QuasiQuotes - CPP - TypeSynonymInstances - KindSignatures - ConstraintKinds - ViewPatterns - TypeOperators - TupleSections - TypeFamilies - GADTs - StandaloneDeriving - RecordWildCards - RankNTypes - PatternGuards - PatternSynonyms - ParallelListComp - NumDecimals - MultiWayIf - NamedFieldPuns - NoImplicitPrelude - LambdaCase - MultiParamTypeClasses - FlexibleContexts - FlexibleInstances - FunctionalDependencies - EmptyDataDecls - ExistentialQuantification - DefaultSignatures - DeriveDataTypeable - DeriveGeneric - DeriveLift - DeriveFunctor - DeriveFoldable - DeriveTraversable - DeriveAnyClass - DerivingStrategies - DerivingVia - GeneralizedNewtypeDeriving - DataKinds - BinaryLiterals - PolyKinds - PackageImports - TypeApplications - RecursiveDo - TypeFamilyDependencies - QuantifiedConstraints - EmptyDataDeriving - StandaloneKindSignatures - NoStarIsType - other-extensions: - GeneralizedNewtypeDeriving - IncoherentInstances - OverloadedLists - UndecidableInstances - ApplicativeDo - ghc-options: -Wall -Wmissing-home-modules -Wredundant-constraints -Widentities -Wincomplete-uni-patterns -fno-warn-type-defaults -fno-warn-unrecognised-pragmas -fno-warn-partial-type-signatures -fno-max-relevant-binds -j -freduction-depth=0 -fprof-auto-calls -g -main-is Database -threaded -rtsopts "-with-rtsopts=-N -T" - build-depends: - Glob - , HaskellNet - , HaskellNet-SSL - , HsYAML - , HsYAML-aeson - , IntervalMap - , MonadRandom - , acid-state - , aeson >=1.5 - , aeson-pretty - , array - , async - , attoparsec - , base - , base32 - , base64-bytestring - , bimap - , binary - , binary-instances - , binary-orphans - , blaze-html - , blaze-markup - , bytestring - , case-insensitive - , cassava - , cassava-conduit - , classy-prelude - , classy-prelude-yesod - , clock - , colonnade >=1.1.1 - , conduit - , conduit-resumablesink >=0.2 - , connection - , constraints - , containers - , cookie - , cryptoids - , cryptoids-class - , cryptoids-types - , cryptonite - , cryptonite-conduit - , data-default - , data-textual - , deepseq - , directory - , directory-tree - , doclayout - , doctemplates - , either - , email-validate - , encoding - , esqueleto >=3.1.0 - , exceptions - , extended-reals - , fast-logger - , fastcdc - , file-embed - , filepath - , filepath-crypto - , foreign-store - , generic-deriving - , generic-lens - , gitrev - , hashable - , haskell-src-meta - , hsass - , http-api-data - , http-client - , http-client-tls - , http-conduit - , http-types - , insert-ordered-containers - , jose-jwt - , lattices - , ldap-client - , lens - , lens-aeson - , list-t - , memcached-binary - , memory - , mime-mail - , mime-types - , minio-hs - , mmorph - , monad-control - , monad-logger - , monad-memo - , mono-traversable - , mono-traversable-keys - , mtl - , multiset - , network >=3 - , network-bsd - , network-ip - , network-uri - , nonce - , pandoc - , pandoc-types - , parsec - , parsec-numbers - , path-pieces - , persistent - , persistent-postgresql - , persistent-qq - , persistent-template - , pkcs7 - , pointedlist - , postgresql-simple - , pqueue - , profunctors - , prometheus-client - , prometheus-metrics-ghc - , psqueues - , random - , random-shuffle - , resourcet - , retry - , rfc5051 - , saltine - , scientific - , semigroupoids - , semver - , servant - , servant-client - , servant-client-core - , servant-docs - , servant-quickcheck - , servant-server - , servant-swagger - , serversession - , serversession-backend-acid-state - , shakespeare - , stm - , stm-delay - , streaming-commons - , swagger2 - , system-locale - , systemd - , tagged - , template-haskell - , text - , text-metrics - , th-abstraction - , th-lift - , th-lift-instances - , time - , token-bucket - , topograph - , transformers - , transformers-base - , typed-process - , tz - , unidecode - , universe - , universe-base - , uniworx - , unix - , unliftio - , unliftio-pool - , unordered-containers - , uuid - , uuid-crypto - , uuid-types - , vault - , vector - , wai - , wai-extra - , wai-logger - , wai-middleware-prometheus - , warp - , wl-pprint-text - , word24 - , xlsx - , xss-sanitize - , yaml - , yesod - , yesod-auth - , yesod-core - , yesod-form - , yesod-persistent - , yesod-static - , zip-stream - default-language: Haskell2010 - if flag(pedantic) - ghc-options: -Werror -fwarn-tabs - if flag(dev) - ghc-options: -O0 -ddump-splices -ddump-to-file -Wderiving-typeable - cpp-options: -DDEVELOPMENT - else - ghc-options: -O -fllvm +RTS -K0 -RTS - if flag(library-only) - buildable: False - -executable uniworxload - main-is: Load.hs - hs-source-dirs: - load - default-extensions: - OverloadedStrings - PartialTypeSignatures - ScopedTypeVariables - TemplateHaskell - QuasiQuotes - CPP - TypeSynonymInstances - KindSignatures - ConstraintKinds - ViewPatterns - TypeOperators - TupleSections - TypeFamilies - GADTs - StandaloneDeriving - RecordWildCards - RankNTypes - PatternGuards - PatternSynonyms - ParallelListComp - NumDecimals - MultiWayIf - NamedFieldPuns - NoImplicitPrelude - LambdaCase - MultiParamTypeClasses - FlexibleContexts - FlexibleInstances - FunctionalDependencies - EmptyDataDecls - ExistentialQuantification - DefaultSignatures - DeriveDataTypeable - DeriveGeneric - DeriveLift - DeriveFunctor - DeriveFoldable - DeriveTraversable - DeriveAnyClass - DerivingStrategies - DerivingVia - GeneralizedNewtypeDeriving - DataKinds - BinaryLiterals - PolyKinds - PackageImports - TypeApplications - RecursiveDo - TypeFamilyDependencies - QuantifiedConstraints - EmptyDataDeriving - StandaloneKindSignatures - NoStarIsType - other-extensions: - GeneralizedNewtypeDeriving - IncoherentInstances - OverloadedLists - UndecidableInstances - ApplicativeDo - ghc-options: -Wall -Wmissing-home-modules -Wredundant-constraints -Widentities -Wincomplete-uni-patterns -fno-warn-type-defaults -fno-warn-unrecognised-pragmas -fno-warn-partial-type-signatures -fno-max-relevant-binds -j -freduction-depth=0 -fprof-auto-calls -g -main-is Load -threaded -rtsopts "-with-rtsopts=-N -T" - build-depends: - Glob - , HaskellNet - , HaskellNet-SSL - , HsYAML - , HsYAML-aeson - , IntervalMap - , MonadRandom - , acid-state - , aeson >=1.5 - , aeson-pretty - , array - , async - , attoparsec - , base - , base32 - , base64-bytestring - , bimap - , binary - , binary-instances - , binary-orphans - , blaze-html - , blaze-markup - , bytestring - , case-insensitive - , cassava - , cassava-conduit - , classy-prelude - , classy-prelude-yesod - , clock - , colonnade >=1.1.1 - , conduit - , conduit-resumablesink >=0.2 - , connection - , constraints - , containers - , cookie - , cryptoids - , cryptoids-class - , cryptoids-types - , cryptonite - , cryptonite-conduit - , data-default - , data-textual - , deepseq - , directory - , directory-tree - , doclayout - , doctemplates - , either - , email-validate - , encoding - , esqueleto >=3.1.0 - , exceptions - , extended-reals - , fast-logger - , fastcdc - , file-embed - , filepath - , filepath-crypto - , foreign-store - , generic-deriving - , generic-lens - , gitrev - , hashable - , haskell-src-meta - , hsass - , http-api-data - , http-client - , http-client-tls - , http-conduit - , http-types - , insert-ordered-containers - , jose-jwt - , lattices - , ldap-client - , lens - , lens-aeson - , list-t - , memcached-binary - , memory - , mime-mail - , mime-types - , minio-hs - , mmorph - , monad-control - , monad-logger - , monad-memo - , mono-traversable - , mono-traversable-keys - , mtl - , multiset - , network >=3 - , network-bsd - , network-ip - , network-uri - , nonce - , normaldistribution - , pandoc - , pandoc-types - , parsec - , parsec-numbers - , path-pieces - , persistent - , persistent-postgresql - , persistent-qq - , persistent-template - , pkcs7 - , pointedlist - , postgresql-simple - , pqueue - , profunctors - , prometheus-client - , prometheus-metrics-ghc - , psqueues - , random - , random-shuffle - , resourcet - , retry - , rfc5051 - , saltine - , scalpel - , scientific - , semigroupoids - , semver - , servant - , servant-client - , servant-client-core - , servant-docs - , servant-quickcheck - , servant-server - , servant-swagger - , serversession - , serversession-backend-acid-state - , shakespeare - , stm - , stm-delay - , streaming-commons - , swagger2 - , system-locale - , systemd - , tagged - , template-haskell - , text - , text-metrics - , th-abstraction - , th-lift - , th-lift-instances - , time - , token-bucket - , topograph - , transformers - , transformers-base - , typed-process - , tz - , unidecode - , universe - , universe-base - , uniworx - , unix - , unliftio - , unliftio-pool - , unordered-containers - , uuid - , uuid-crypto - , uuid-types - , vault - , vector - , wai - , wai-extra - , wai-logger - , wai-middleware-prometheus - , warp - , wl-pprint-text - , word24 - , wreq - , xlsx - , xss-sanitize - , yaml - , yesod - , yesod-auth - , yesod-core - , yesod-form - , yesod-persistent - , yesod-static - , zip-stream - default-language: Haskell2010 - if flag(pedantic) - ghc-options: -Werror -fwarn-tabs - if flag(dev) - ghc-options: -O0 -ddump-splices -ddump-to-file -Wderiving-typeable - cpp-options: -DDEVELOPMENT - else - ghc-options: -O -fllvm +RTS -K0 -RTS - if flag(library-only) - buildable: False - -test-suite hlint - type: exitcode-stdio-1.0 - main-is: Hlint.hs - hs-source-dirs: - hlint - default-extensions: - OverloadedStrings - PartialTypeSignatures - ScopedTypeVariables - TemplateHaskell - QuasiQuotes - CPP - TypeSynonymInstances - KindSignatures - ConstraintKinds - ViewPatterns - TypeOperators - TupleSections - TypeFamilies - GADTs - StandaloneDeriving - RecordWildCards - RankNTypes - PatternGuards - PatternSynonyms - ParallelListComp - NumDecimals - MultiWayIf - NamedFieldPuns - NoImplicitPrelude - LambdaCase - MultiParamTypeClasses - FlexibleContexts - FlexibleInstances - FunctionalDependencies - EmptyDataDecls - ExistentialQuantification - DefaultSignatures - DeriveDataTypeable - DeriveGeneric - DeriveLift - DeriveFunctor - DeriveFoldable - DeriveTraversable - DeriveAnyClass - DerivingStrategies - DerivingVia - GeneralizedNewtypeDeriving - DataKinds - BinaryLiterals - PolyKinds - PackageImports - TypeApplications - RecursiveDo - TypeFamilyDependencies - QuantifiedConstraints - EmptyDataDeriving - StandaloneKindSignatures - NoStarIsType - other-extensions: - GeneralizedNewtypeDeriving - IncoherentInstances - OverloadedLists - UndecidableInstances - ApplicativeDo - ghc-options: -Wall -Wmissing-home-modules -Wredundant-constraints -Widentities -Wincomplete-uni-patterns -fno-warn-type-defaults -fno-warn-unrecognised-pragmas -fno-warn-partial-type-signatures -fno-max-relevant-binds -j -freduction-depth=0 -fprof-auto-calls -g - build-depends: - Glob - , HaskellNet - , HaskellNet-SSL - , HsYAML - , HsYAML-aeson - , IntervalMap - , MonadRandom - , acid-state - , aeson >=1.5 - , aeson-pretty - , array - , async - , attoparsec - , base - , base32 - , base64-bytestring - , bimap - , binary - , binary-instances - , binary-orphans - , blaze-html - , blaze-markup - , bytestring - , case-insensitive - , cassava - , cassava-conduit - , classy-prelude - , classy-prelude-yesod - , clock - , colonnade >=1.1.1 - , conduit - , conduit-resumablesink >=0.2 - , connection - , constraints - , containers - , cookie - , cryptoids - , cryptoids-class - , cryptoids-types - , cryptonite - , cryptonite-conduit - , data-default - , data-textual - , deepseq - , directory - , directory-tree - , doclayout - , doctemplates - , either - , email-validate - , encoding - , esqueleto >=3.1.0 - , exceptions - , extended-reals - , fast-logger - , fastcdc - , file-embed - , filepath - , filepath-crypto - , foreign-store - , generic-deriving - , generic-lens - , gitrev - , hashable - , haskell-src-meta - , hlint-test - , hsass - , http-api-data - , http-client - , http-client-tls - , http-conduit - , http-types - , insert-ordered-containers - , jose-jwt - , lattices - , ldap-client - , lens - , lens-aeson - , list-t - , memcached-binary - , memory - , mime-mail - , mime-types - , minio-hs - , mmorph - , monad-control - , monad-logger - , monad-memo - , mono-traversable - , mono-traversable-keys - , mtl - , multiset - , network >=3 - , network-bsd - , network-ip - , network-uri - , nonce - , pandoc - , pandoc-types - , parsec - , parsec-numbers - , path-pieces - , persistent - , persistent-postgresql - , persistent-qq - , persistent-template - , pkcs7 - , pointedlist - , postgresql-simple - , pqueue - , profunctors - , prometheus-client - , prometheus-metrics-ghc - , psqueues - , random - , random-shuffle - , resourcet - , retry - , rfc5051 - , saltine - , scientific - , semigroupoids - , semver - , servant - , servant-client - , servant-client-core - , servant-docs - , servant-quickcheck - , servant-server - , servant-swagger - , serversession - , serversession-backend-acid-state - , shakespeare - , stm - , stm-delay - , streaming-commons - , swagger2 - , system-locale - , systemd - , tagged - , template-haskell - , text - , text-metrics - , th-abstraction - , th-lift - , th-lift-instances - , time - , token-bucket - , topograph - , transformers - , transformers-base - , typed-process - , tz - , unidecode - , universe - , universe-base - , unix - , unliftio - , unliftio-pool - , unordered-containers - , uuid - , uuid-crypto - , uuid-types - , vault - , vector - , wai - , wai-extra - , wai-logger - , wai-middleware-prometheus - , warp - , wl-pprint-text - , word24 - , xlsx - , xss-sanitize - , yaml - , yesod - , yesod-auth - , yesod-core - , yesod-form - , yesod-persistent - , yesod-static - , zip-stream - default-language: Haskell2010 - if flag(pedantic) - ghc-options: -Werror -fwarn-tabs - if flag(dev) - ghc-options: -O0 -ddump-splices -ddump-to-file -Wderiving-typeable - cpp-options: -DDEVELOPMENT - else - ghc-options: -O -fllvm +RTS -K0 -RTS - if !flag(pedantic) - buildable: False - -test-suite yesod - type: exitcode-stdio-1.0 - main-is: Main.hs - other-modules: - Auth.LDAP.ADSpec - CronSpec - Crypto.Hash.TestInstances - Data.NonNull.TestInstances - Data.Scientific.InstancesSpec - Database - Database.Fill - Database.Persist.Sql.Types.TestInstances - Foundation.ServantSpec - FoundationSpec - Handler.CommonSpec - Handler.CorrectionsSpec - Handler.Exam.FormSpec - Handler.HomeSpec - Handler.ProfileSpec - Handler.SAPSpec - Handler.Sheet.PersonalisedFilesSpec - Handler.Utils.ExamSpec - Handler.Utils.FilesSpec - Handler.Utils.RatingSpec - Handler.Utils.SubmissionSpec - Handler.Utils.Table.Pagination.TypesSpec - Handler.Utils.Table.PaginationSpec - Handler.Utils.ZipSpec - Jose.Jwk.TestInstances - MailSpec - Model.MigrationSpec - Model.RatingSpec - Model.Tokens.UploadSpec - Model.Types.FileSpec - Model.Types.LanguagesSpec - Model.TypesSpec - ModelSpec - PandocSpec - Servant.Client.Core.BaseUrl.TestInstances - ServantApi.ExternalApis.TypeSpec - ServantApi.ExternalApisSpec - ServantApiSpec - Test.QuickCheck.Classes.Binary - Test.QuickCheck.Classes.Csv - Test.QuickCheck.Classes.Hashable - Test.QuickCheck.Classes.HttpApiData - Test.QuickCheck.Classes.JSON - Test.QuickCheck.Classes.PathPiece - Test.QuickCheck.Classes.PersistField - Test.QuickCheck.Classes.Universe - TestImport - TestInstances - Text.Blaze.TestInstances - User - Utils.CsvSpec - Utils.DateTimeSpec - Utils.I18nSpec - Utils.PathPieceSpec - Utils.TypesSpec - UtilsSpec - Paths_uniworx - hs-source-dirs: - test - default-extensions: - OverloadedStrings - PartialTypeSignatures - ScopedTypeVariables - TemplateHaskell - QuasiQuotes - CPP - TypeSynonymInstances - KindSignatures - ConstraintKinds - ViewPatterns - TypeOperators - TupleSections - TypeFamilies - GADTs - StandaloneDeriving - RecordWildCards - RankNTypes - PatternGuards - PatternSynonyms - ParallelListComp - NumDecimals - MultiWayIf - NamedFieldPuns - NoImplicitPrelude - LambdaCase - MultiParamTypeClasses - FlexibleContexts - FlexibleInstances - FunctionalDependencies - EmptyDataDecls - ExistentialQuantification - DefaultSignatures - DeriveDataTypeable - DeriveGeneric - DeriveLift - DeriveFunctor - DeriveFoldable - DeriveTraversable - DeriveAnyClass - DerivingStrategies - DerivingVia - GeneralizedNewtypeDeriving - DataKinds - BinaryLiterals - PolyKinds - PackageImports - TypeApplications - RecursiveDo - TypeFamilyDependencies - QuantifiedConstraints - EmptyDataDeriving - StandaloneKindSignatures - NoStarIsType - other-extensions: - GeneralizedNewtypeDeriving - IncoherentInstances - OverloadedLists - UndecidableInstances - ApplicativeDo - ghc-options: -Wall -Wmissing-home-modules -Wredundant-constraints -Widentities -Wincomplete-uni-patterns -fno-warn-type-defaults -fno-warn-unrecognised-pragmas -fno-warn-partial-type-signatures -fno-max-relevant-binds -j -freduction-depth=0 -fprof-auto-calls -g -fno-warn-orphans -threaded -rtsopts "-with-rtsopts=-N -T" - build-depends: - Glob - , HUnit - , HaskellNet - , HaskellNet-SSL - , HsYAML - , HsYAML-aeson - , IntervalMap - , MonadRandom - , QuickCheck - , acid-state - , aeson >=1.5 - , aeson-pretty - , array - , async - , attoparsec - , base - , base32 - , base64-bytestring - , bimap - , binary - , binary-instances - , binary-orphans - , blaze-html - , blaze-markup - , bytestring - , case-insensitive - , cassava - , cassava-conduit - , classy-prelude - , classy-prelude-yesod - , clock - , colonnade >=1.1.1 - , conduit - , conduit-extra - , conduit-resumablesink >=0.2 - , connection - , constraints - , containers - , cookie - , cryptoids - , cryptoids-class - , cryptoids-types - , cryptonite - , cryptonite-conduit - , data-default - , data-textual - , deepseq - , directory - , directory-tree - , doclayout - , doctemplates - , either - , email-validate - , encoding - , esqueleto >=3.1.0 - , exceptions - , extended-reals - , fast-logger - , fastcdc - , file-embed - , filepath - , filepath-crypto - , foreign-store - , generic-arbitrary - , generic-deriving - , generic-lens - , gitrev - , hashable - , haskell-src-meta - , hsass - , hspec >=2.0.0 - , http-api-data - , http-client - , http-client-tls - , http-conduit - , http-media - , http-types - , insert-ordered-containers - , jose-jwt - , lattices - , ldap-client - , lens - , lens-aeson - , lens-properties - , list-t - , memcached-binary - , memory - , mime-mail - , mime-types - , minio-hs - , mmorph - , monad-control - , monad-logger - , monad-memo - , mono-traversable - , mono-traversable-keys - , mtl - , multiset - , network >=3 - , network-arbitrary - , network-bsd - , network-ip - , network-uri - , nonce - , pandoc - , pandoc-types - , parsec - , parsec-numbers - , path-pieces - , persistent - , persistent-postgresql - , persistent-qq - , persistent-template - , pkcs7 - , pointedlist - , postgresql-simple - , pqueue - , profunctors - , prometheus-client - , prometheus-metrics-ghc - , psqueues - , quickcheck-classes - , quickcheck-instances - , quickcheck-io - , random - , random-shuffle - , resourcet - , retry - , rfc5051 - , saltine - , scientific - , semigroupoids - , semver - , servant - , servant-client - , servant-client-core - , servant-docs - , servant-quickcheck - , servant-server - , servant-swagger - , serversession - , serversession-backend-acid-state - , shakespeare - , splitmix - , stm - , stm-delay - , streaming-commons - , swagger2 - , system-locale - , systemd - , tagged - , template-haskell - , text - , text-metrics - , th-abstraction - , th-lift - , th-lift-instances - , time - , token-bucket - , topograph - , transformers - , transformers-base - , typed-process - , tz - , unidecode - , universe - , universe-base - , uniworx - , unix - , unliftio - , unliftio-pool - , unordered-containers - , uuid - , uuid-crypto - , uuid-types - , vault - , vector - , wai - , wai-extra - , wai-logger - , wai-middleware-prometheus - , warp - , wl-pprint-text - , word24 - , xlsx - , xss-sanitize - , yaml - , yesod - , yesod-auth - , yesod-core - , yesod-form - , yesod-persistent - , yesod-static - , yesod-test - , zip-stream - default-language: Haskell2010 - if flag(pedantic) - ghc-options: -Werror -fwarn-tabs - if flag(dev) - ghc-options: -O0 -ddump-splices -ddump-to-file -Wderiving-typeable - cpp-options: -DDEVELOPMENT - else - ghc-options: -O -fllvm +RTS -K0 -RTS