Show
Ignore:
Timestamp:
02/09/06 00:15:46 (18 years ago)
Author:
jerome
Message:

Huge speed improvements when using the --delete command line option for pkprinters, pkbcodes and edpykota.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • pykota/trunk/bin/pkbcodes

    r2622 r2657  
    8989            raise PyKotaCommandLineError, "%s : %s" % (pwd.getpwuid(os.geteuid())[0], _("You're not allowed to use this command.")) 
    9090             
    91         if (options["list"] or options["reset"]) and not names : 
    92             names = ["*"] 
    93              
    94         if options["add"] :     
    95             billingcodes = [] 
    96             for bname in names : 
    97                 billingcode = self.storage.getBillingCode(bname) 
    98                 if billingcode.Exists : 
    99                     if options["skipexisting"] : 
    100                         self.printInfo(_("Billing code [%s] already exists, skipping.") % billingcode.BillingCode) 
    101                     else :     
    102                         self.printInfo(_("Billing code [%s] already exists, will be modified.") % billingcode.BillingCode) 
    103                         billingcodes.append(billingcode) 
    104                 else : 
    105                     billingcode = self.storage.addBillingCode(bname) 
    106                     if not billingcode.Exists : 
    107                         raise PyKotaToolError, _("Impossible to add billingcode %s") % bname 
    108                     else :      
    109                         billingcodes.append(billingcode) 
    110         else :         
    111             billingcodes = self.storage.getMatchingBillingCodes(",".join(names)) 
    112             if not billingcodes : 
    113                 raise PyKotaCommandLineError, _("There's no billingcode matching %s") % " ".join(names) 
    114                      
    115         for billingcode in billingcodes :         
    116             if options["delete"] : 
    117                 billingcode.delete() 
    118             elif options["list"] :     
    119                 print "%s [%s] %s %s %s %.2f %s" % \ 
    120                       (billingcode.BillingCode, billingcode.Description, \ 
    121                        billingcode.PageCounter, \ 
    122                        _("pages"), \ 
    123                        _("and"), \ 
    124                        billingcode.Balance, \ 
    125                        _("credits")) 
    126             else :     
    127                 if options["reset"] : 
    128                     billingcode.reset()     
    129                 if options["description"] is not None : 
    130                     billingcode.setDescription(options["description"].strip()) 
     91        if options["delete"] :     
     92            self.display("Processing...\n") 
     93            todelete = self.storage.getMatchingBillingCodes(",".join(names)) 
     94            nbtotal = len(todelete) 
     95            for i in range(nbtotal) : 
     96                todelete[i].delete() 
     97                percent = 100.0 * float(i) / float(nbtotal) 
     98                self.display("\r%.02f%%" % percent) 
     99            self.display("\r100.00%%\r        ") 
     100            self.display("\r%s\n" % _("Done.")) 
     101        else : 
     102            if (options["list"] or options["reset"]) and not names : 
     103                names = ["*"] 
     104                 
     105            if options["add"] :     
     106                billingcodes = [] 
     107                for bname in names : 
     108                    billingcode = self.storage.getBillingCode(bname) 
     109                    if billingcode.Exists : 
     110                        if options["skipexisting"] : 
     111                            self.printInfo(_("Billing code [%s] already exists, skipping.") % billingcode.BillingCode) 
     112                        else :     
     113                            self.printInfo(_("Billing code [%s] already exists, will be modified.") % billingcode.BillingCode) 
     114                            billingcodes.append(billingcode) 
     115                    else : 
     116                        billingcode = self.storage.addBillingCode(bname) 
     117                        if not billingcode.Exists : 
     118                            raise PyKotaToolError, _("Impossible to add billingcode %s") % bname 
     119                        else :      
     120                            billingcodes.append(billingcode) 
     121            else :         
     122                billingcodes = self.storage.getMatchingBillingCodes(",".join(names)) 
     123                if not billingcodes : 
     124                    raise PyKotaCommandLineError, _("There's no billingcode matching %s") % " ".join(names) 
     125                         
     126            for billingcode in billingcodes :         
     127                if options["list"] :     
     128                    print "%s [%s] %s %s %s %.2f %s" % \ 
     129                          (billingcode.BillingCode, billingcode.Description, \ 
     130                           billingcode.PageCounter, \ 
     131                           _("pages"), \ 
     132                           _("and"), \ 
     133                           billingcode.Balance, \ 
     134                           _("credits")) 
     135                else :     
     136                    if options["reset"] : 
     137                        billingcode.reset()     
     138                    if options["description"] is not None : 
     139                        billingcode.setDescription(options["description"].strip()) 
    131140                      
    132141if __name__ == "__main__" :