From 514ff2acff2ba9ad9f809e22fc8ed5a986410e5d Mon Sep 17 00:00:00 2001 From: Clint Adams Date: Fri, 19 Apr 2013 17:57:46 -0400 Subject: Initial stab. --- Handler/Home.hs | 29 +++++++++++++++++++++++++++++ Handler/Register.hs | 40 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+) create mode 100644 Handler/Home.hs create mode 100644 Handler/Register.hs (limited to 'Handler') diff --git a/Handler/Home.hs b/Handler/Home.hs new file mode 100644 index 0000000..94b206e --- /dev/null +++ b/Handler/Home.hs @@ -0,0 +1,29 @@ +-- sflc-ledger-reports: web interface to hledger-based reports +-- Copyright (C) 2013 Clint Adams +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU Affero General Public License as +-- published by the Free Software Foundation, either version 3 of the +-- License, or (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU Affero General Public License for more details. +-- +-- You should have received a copy of the GNU Affero General Public License +-- along with this program. If not, see . + +{-# LANGUAGE OverloadedStrings #-} +module Handler.Home where + +import Import +import Data.Map (keys) + +getHomeR :: Handler RepHtml +getHomeR = do + ledgernames <- fmap (keys . hledgerConfig) getYesod + defaultLayout $ do + setTitle "Ledger reports" + $(widgetFile "homepage") + diff --git a/Handler/Register.hs b/Handler/Register.hs new file mode 100644 index 0000000..26e38a2 --- /dev/null +++ b/Handler/Register.hs @@ -0,0 +1,40 @@ +-- sflc-ledger-reports: web interface to hledger-based reports +-- Copyright (C) 2013 Clint Adams +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU Affero General Public License as +-- published by the Free Software Foundation, either version 3 of the +-- License, or (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU Affero General Public License for more details. +-- +-- You should have received a copy of the GNU Affero General Public License +-- along with this program. If not, see . + +{-# LANGUAGE OverloadedStrings #-} +module Handler.Register where + +import Import +import qualified Data.Text as T +import Hledger.RegisterCSV +import qualified Data.Map as Map + +typeCsv :: ContentType +typeCsv = "text/csv; charset=utf-8" + +newtype RepCsv = RepCsv Content +instance HasReps RepCsv where + chooseRep (RepCsv c) _ = return (typeCsv, c) + +getRegisterR :: Text -> Handler RepCsv +getRegisterR ledger = do + ledgers <- fmap hledgerConfig getYesod + case Map.lookup ledger ledgers of + Nothing -> notFound + Just fn -> do + csv <- liftIO $ convertJournalToRegisterCSV fn + setHeader "Content-Disposition" (T.concat ["attachment; filename=", ledger, ".csv"]) + return $ RepCsv $ toContent csv -- cgit v1.2.3