Show
Ignore:
Timestamp:
09/27/08 22:02:37 (16 years ago)
Author:
jerome
Message:

Removed unnecessary spaces at EOL.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • pykota/trunk/bin/pkinvoice

    r3411 r3413  
    99# the Free Software Foundation, either version 3 of the License, or 
    1010# (at your option) any later version. 
    11 #  
     11# 
    1212# This program is distributed in the hope that it will be useful, 
    1313# but WITHOUT ANY WARRANTY; without even the implied warranty of 
    1414# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
    1515# GNU General Public License for more details. 
    16 #  
     16# 
    1717# You should have received a copy of the GNU General Public License 
    1818# along with this program.  If not, see <http://www.gnu.org/licenses/>. 
     
    3434    from reportlab.lib import pagesizes 
    3535    from reportlab.lib.units import cm 
    36 except ImportError :     
     36except ImportError : 
    3737    hasRL = False 
    38 else :     
     38else : 
    3939    hasRL = True 
    40      
     40 
    4141try : 
    42     import PIL.Image  
    43 except ImportError :     
     42    import PIL.Image 
     43except ImportError : 
    4444    hasPIL = False 
    45 else :     
     45else : 
    4646    hasPIL = True 
    4747 
     
    5656from pykota.tool import Percent, PyKotaTool 
    5757 
    58 class PKInvoice(PyKotaTool) :         
     58class PKInvoice(PyKotaTool) : 
    5959    """A class for invoice generator.""" 
    6060    validfilterkeys = [ "username", 
     
    6666                        "end", 
    6767                      ] 
    68                        
     68 
    6969    def printVar(self, label, value, size) : 
    7070        """Outputs a variable onto the PDF canvas. 
    71          
     71 
    7272           Returns the number of points to substract to current Y coordinate. 
    73         """    
     73        """ 
    7474        xcenter = (self.pagesize[0] / 2.0) - 1*cm 
    7575        self.canvas.saveState() 
     
    8282        self.canvas.restoreState() 
    8383        self.ypos -= (size + 4) 
    84          
     84 
    8585    def pagePDF(self, invoicenumber, name, values, unit, vat) : 
    8686        """Generates a new page in the PDF document.""" 
     
    9696            datetime = time.strftime("%c", time.localtime()).decode(self.charset, "replace") 
    9797            self.printVar(_("Edited on"), datetime, 14) 
    98                  
     98 
    9999            self.ypos -= 20 
    100100            self.printVar(_("Number of jobs printed"), str(values["nbjobs"]), 18) 
     
    107107            self.canvas.showPage() 
    108108            return 1 
    109         return 0     
    110          
     109        return 0 
     110 
    111111    def initPDF(self, logo) : 
    112112        """Initializes the PDF document.""" 
    113         self.pdfDocument = cStringIO.StringIO()         
     113        self.pdfDocument = cStringIO.StringIO() 
    114114        self.canvas = c = canvas.Canvas(self.pdfDocument, \ 
    115115                                        pagesize=self.pagesize, \ 
    116116                                        pageCompression=1) 
    117          
     117 
    118118        c.setAuthor(self.effectiveUserName) 
    119119        c.setTitle(_("PyKota invoices")) 
    120120        c.setSubject(_("Invoices generated with PyKota")) 
    121          
     121 
    122122        self.canvas.beginForm("background") 
    123123        self.canvas.saveState() 
    124          
    125         self.ypos = self.pagesize[1] - (2 * cm)             
    126          
     124 
     125        self.ypos = self.pagesize[1] - (2 * cm) 
     126 
    127127        xcenter = self.pagesize[0] / 2.0 
    128128        if logo : 
    129             try :     
     129            try : 
    130130                imglogo = PIL.Image.open(logo) 
    131             except IOError :     
     131            except IOError : 
    132132                self.printInfo("Unable to open image %s" % logo, "warn") 
    133133            else : 
    134134                (width, height) = imglogo.size 
    135                 multi = float(width) / (8 * cm)  
     135                multi = float(width) / (8 * cm) 
    136136                width = float(width) / multi 
    137137                height = float(height) / multi 
     
    140140                                  self.ypos, \ 
    141141                                  width, height) 
    142          
     142 
    143143        self.ypos -= (cm + 20) 
    144144        self.canvas.setFont("Helvetica-Bold", 14) 
     
    146146        msg = _("Here's the invoice for your printouts") 
    147147        self.canvas.drawCentredString(xcenter, self.ypos, "%s :" % msg) 
    148          
     148 
    149149        self.yorigine = self.ypos 
    150150        self.canvas.restoreState() 
    151151        self.canvas.endForm() 
    152          
    153     def endPDF(self, fname) :     
     152 
     153    def endPDF(self, fname) : 
    154154        """Flushes the PDF generator.""" 
    155155        self.canvas.save() 
    156         if fname != "-" :         
     156        if fname != "-" : 
    157157            outfile = open(fname, "w") 
    158158            outfile.write(self.pdfDocument.getvalue()) 
    159159            outfile.close() 
    160         else :     
     160        else : 
    161161            sys.stdout.write(self.pdfDocument.getvalue()) 
    162162            sys.stdout.flush() 
    163          
     163 
    164164    def genInvoices(self, peruser, logo, outfname, firstnumber, unit, vat) : 
    165165        """Generates the invoices file.""" 
     
    168168            if outfname != "-" : 
    169169                percent.display("%s...\n" % _("Generating invoices")) 
    170                  
     170 
    171171            self.initPDF(logo) 
    172172            number = firstnumber 
     
    175175                if outfname != "-" : 
    176176                    percent.oneMore() 
    177                      
     177 
    178178            if number > firstnumber : 
    179179                self.endPDF(outfname) 
    180                  
     180 
    181181            if outfname != "-" : 
    182182                percent.done() 
    183          
     183 
    184184    def main(self, arguments, options) : 
    185185        """Generate invoices.""" 
     
    188188        if not hasPIL : 
    189189            raise PyKotaToolError, "The Python Imaging Library is missing. Download it from http://www.pythonware.com/downloads" 
    190              
     190 
    191191        self.adminOnly() 
    192          
     192 
    193193        self.pagesize = getPageSize(options.pagesize) 
    194              
     194 
    195195        extractonly = {} 
    196196        for filterexp in arguments : 
     
    200200                    filterkey = filterkey.lower() 
    201201                    if filterkey not in self.validfilterkeys : 
    202                         raise ValueError                 
    203                 except ValueError :     
     202                        raise ValueError 
     203                except ValueError : 
    204204                    raise PyKotaCommandLineError, _("Invalid filter value [%s], see help.") % filterexp 
    205                 else :     
     205                else : 
    206206                    extractonly.update({ filterkey : filtervalue }) 
    207              
     207 
    208208        percent = Percent(self) 
    209209        outfname = options.output.strip().encode(sys.getfilesystemencoding()) 
    210210        if outfname != "-" : 
    211211            percent.display("%s..." % _("Extracting datas")) 
    212              
    213         username = extractonly.get("username")     
     212 
     213        username = extractonly.get("username") 
    214214        if username : 
    215215            user = self.storage.getUser(username) 
    216216        else : 
    217217            user = None 
    218              
    219         printername = extractonly.get("printername")     
     218 
     219        printername = extractonly.get("printername") 
    220220        if printername : 
    221221            printer = self.storage.getPrinter(printername) 
    222         else :     
     222        else : 
    223223            printer = None 
    224              
     224 
    225225        start = extractonly.get("start") 
    226226        end = extractonly.get("end") 
    227227        (start, end) = self.storage.cleanDates(start, end) 
    228          
    229         jobs = self.storage.retrieveHistory(user=user,     
    230                                             printer=printer,  
     228 
     229        jobs = self.storage.retrieveHistory(user=user, 
     230                                            printer=printer, 
    231231                                            hostname=extractonly.get("hostname"), 
    232232                                            billingcode=extractonly.get("billingcode"), 
     
    235235                                            end=end, 
    236236                                            limit=0) 
    237              
    238         peruser = {}                                     
    239         nbjobs = 0                                     
    240         nbpages = 0                                             
     237 
     238        peruser = {} 
     239        nbjobs = 0 
     240        nbpages = 0 
    241241        nbcredits = 0.0 
    242242        percent.setSize(len(jobs)) 
    243243        if outfname != "-" : 
    244244            percent.display("\n") 
    245         for job in jobs :                                     
     245        for job in jobs : 
    246246            if job.JobSize and (job.JobAction not in ("DENY", "CANCEL", "REFUND")) : 
    247247                nbpages += job.JobSize 
     
    256256        if outfname != "-" : 
    257257            percent.done() 
    258         self.genInvoices(peruser,  
    259                          options.logo.strip().encode(sys.getfilesystemencoding()),  
    260                          outfname,  
    261                          options.number,  
    262                          options.unit or _("Credits"),  
     258        self.genInvoices(peruser, 
     259                         options.logo.strip().encode(sys.getfilesystemencoding()), 
     260                         outfname, 
     261                         options.number, 
     262                         options.unit or _("Credits"), 
    263263                         options.vat) 
    264         if outfname != "-" :     
     264        if outfname != "-" : 
    265265            nbusers = len(peruser) 
    266266            print _("Invoiced %(nbusers)i users for %(nbjobs)i jobs, %(nbpages)i pages and %(nbcredits).3f credits") \ 
    267267                     % locals() 
    268                       
    269 if __name__ == "__main__" :  
     268 
     269if __name__ == "__main__" : 
    270270    parser = PyKotaOptionParser(description=_("Invoice generator for PyKota."), 
    271271                                usage="pkinvoice [options] [filterexpr]") 
     
    281281                            default=u"A4", 
    282282                            help=_("Set the size of the page. Most well known page sizes are recognized, like 'A4' or 'Letter' to name a few. The default page size is %default.")) 
    283     parser.add_option("-n", "--number",                         
     283    parser.add_option("-n", "--number", 
    284284                            dest="number", 
    285285                            type="int", 
     
    293293                            default=u"-", 
    294294                            help=_("The name of the file to which the PDF invoices will be written. If not set or set to '%default', the PDF document will be sent to the standard output.")) 
    295                              
     295 
    296296    # TODO : due to Python's optparse.py bug #1498146 fixed in rev 46861 
    297297    # TODO : we can't use 'default=_("Credits")' for this option 
    298     parser.add_option("-u", "--unit",                    
     298    parser.add_option("-u", "--unit", 
    299299                            dest="unit", 
    300300                            type="string", 
    301301                            help=_("The name of the unit to use on the invoices. The default value is 'Credits' or its locale translation.")) 
    302                              
    303     parser.add_option("-V", "--vat",  
     302 
     303    parser.add_option("-V", "--vat", 
    304304                            dest="vat", 
    305305                            type="float", 
     
    308308                            default=0.0, 
    309309                            help=_("The value in percent of the applicable VAT to be exposed. The default is %default, meaning no VAT.")) 
    310                              
    311     parser.add_filterexpression("username", _("User's name"))                         
    312     parser.add_filterexpression("printername", _("Printer's name"))                         
    313     parser.add_filterexpression("hostname", _("Host's name"))                         
    314     parser.add_filterexpression("jobid", _("Job's id"))                         
     310 
     311    parser.add_filterexpression("username", _("User's name")) 
     312    parser.add_filterexpression("printername", _("Printer's name")) 
     313    parser.add_filterexpression("hostname", _("Host's name")) 
     314    parser.add_filterexpression("jobid", _("Job's id")) 
    315315    parser.add_filterexpression("billingcode", _("Job's billing code")) 
    316     parser.add_filterexpression("start", _("Job's date of printing"))                         
    317     parser.add_filterexpression("end", _("Job's date of printing"))                         
    318      
    319     parser.add_example('--unit EURO --output /tmp/invoices.pdf start=now-30',  
     316    parser.add_filterexpression("start", _("Job's date of printing")) 
     317    parser.add_filterexpression("end", _("Job's date of printing")) 
     318 
     319    parser.add_example('--unit EURO --output /tmp/invoices.pdf start=now-30', 
    320320                       _("This would generate a PDF document containing invoices for all users who have spent some credits last month. Amounts would be in EURO and not VAT information would be included.")) 
    321                         
    322     run(parser, PKInvoice)                    
     321 
     322    run(parser, PKInvoice)