root / pykota / trunk / pykota / reporters / text.py @ 1235

Revision 1235, 4.0 kB (checked in by jalet, 20 years ago)

Some code refactoring.
New HTML reporter added, which is now used in the CGI script for web based
print quota reports. It will need some de-uglyfication though...

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
Line 
1# PyKota
2# -*- coding: ISO-8859-15 -*-
3
4# PyKota - Print Quotas for CUPS and LPRng
5#
6# (c) 2003 Jerome Alet <alet@librelogiciel.com>
7# This program is free software; you can redistribute it and/or modify
8# it under the terms of the GNU General Public License as published by
9# the Free Software Foundation; either version 2 of the License, or
10# (at your option) any later version.
11#
12# This program is distributed in the hope that it will be useful,
13# but WITHOUT ANY WARRANTY; without even the implied warranty of
14# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15# GNU General Public License for more details.
16#
17# You should have received a copy of the GNU General Public License
18# along with this program; if not, write to the Free Software
19# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
20#
21# $Id$
22#
23# $Log$
24# Revision 1.6  2003/12/02 14:40:21  jalet
25# Some code refactoring.
26# New HTML reporter added, which is now used in the CGI script for web based
27# print quota reports. It will need some de-uglyfication though...
28#
29# Revision 1.5  2003/10/07 09:07:29  jalet
30# Character encoding added to please latest version of Python
31#
32# Revision 1.4  2003/07/07 11:49:24  jalet
33# Lots of small fixes with the help of PyChecker
34#
35# Revision 1.3  2003/07/05 07:46:50  jalet
36# The previous bug fix was incomplete.
37#
38# Revision 1.2  2003/07/02 09:29:12  jalet
39# Bug fixed when wanting a report and an user/group was limited by account balance
40#
41# Revision 1.1  2003/06/30 12:46:15  jalet
42# Extracted reporting code.
43#
44#
45#
46
47from mx import DateTime
48
49from pykota.reporter import BaseReporter, PyKotaReporterError
50   
51class Reporter(BaseReporter) :   
52    """Text reporter."""
53    def generateReport(self) :
54        """Produces a simple text report."""
55        self.report = []
56        for printer in self.printers :
57            self.report.append(self.getPrinterTitle(printer))
58            self.report.append(self.getPrinterGraceDelay(printer))
59            (pjob, ppage) = self.getPrinterPrices(printer)
60            self.report.append(pjob)
61            self.report.append(ppage)
62           
63            total = 0
64            totalmoney = 0.0
65            if self.isgroup :
66                header = self.getReportHeader()
67                self.report.append(header)
68                self.report.append('-' * len(header))
69                for (group, grouppquota) in self.tool.storage.getPrinterGroupsAndQuotas(printer, self.ugnames) :
70                    (pages, money, name, reached, soft, hard, balance, datelimit, lifepagecounter, lifetimepaid) = self.getQuota(group, grouppquota)
71                    self.report.append("%-9.9s %s %7i %7s %7s %10s %-10.10s %8i %10s" % (name, reached, pagecounter, soft, hard, balance, datelimit, lifepagecounter, lifetimepaid))
72                    total += pages
73                    totalmoney += money
74            else :
75                # default is user quota report
76                header = self.getReportHeader()
77                self.report.append(header)
78                self.report.append('-' * len(header))
79                for (user, userpquota) in self.tool.storage.getPrinterUsersAndQuotas(printer, self.ugnames) :
80                    (pages, money, name, reached, pagecounter, soft, hard, balance, datelimit, lifepagecounter, lifetimepaid) = self.getQuota(user, userpquota)
81                    self.report.append("%-9.9s %s %7i %7s %7s %10s %-10.10s %8i %10s" % (name, reached, pagecounter, soft, hard, balance, datelimit, lifepagecounter, lifetimepaid))
82                    total += pages
83                    totalmoney += money
84            if total or totalmoney :       
85                (tpage, tmoney) = self.getTotals(total, totalmoney)
86                self.report.append((" " * 50) + tpage + tmoney)
87            self.report.append((" " * 51) + self.getPrinterRealPageCounter(printer))
88            self.report.append("")       
89        if self.isgroup :   
90            self.report.append(_("Totals may be inaccurate if some users are members of several groups."))
91        return "\n".join(self.report)   
92                       
Note: See TracBrowser for help on using the browser.