Show
Ignore:
Timestamp:
06/25/03 16:10:01 (21 years ago)
Author:
jalet
Message:

Hey, it may work (edpykota --reset excepted) !

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • pykota/trunk/pykota/accounters/querying.py

    r988 r1041  
    2121# 
    2222# $Log$ 
     23# Revision 1.4  2003/06/25 14:10:01  jalet 
     24# Hey, it may work (edpykota --reset excepted) ! 
     25# 
    2326# Revision 1.3  2003/05/06 14:55:47  jalet 
    2427# Missing import ! 
     
    3841from pykota.requester import openRequester, PyKotaRequesterError 
    3942 
    40 MAXTRIES = 6     # maximum number of tries to get the printer's internal page counter 
     43MAXTRIES = 12    # maximum number of tries to get the printer's internal page counter 
    4144TIMETOSLEEP = 10 # number of seconds to sleep between two tries to get the printer's internal page counter 
    4245 
    4346class Accounter(AccounterBase) : 
    44     def doAccounting(self, printerid, userid) : 
     47    def doAccounting(self, printer, user) : 
    4548        """Does print accounting and returns if the job status is ALLOW or DENY.""" 
    4649        # Get the page counter directly from the printer itself 
     
    6568         
    6669        # get last job information for this printer 
    67         pgc = self.filter.storage.getPrinterPageCounter(printerid)     
    68         if pgc is None : 
     70        if not printer.LastJob.Exists : 
    6971            # The printer hasn't been used yet, from PyKota's point of view 
    70             lasthistoryid = None 
    71             lastjobid = self.filter.jobid 
    72             lastuserid = userid 
    73             lastusername = self.filter.username 
     72            lastjob = None 
     73            lastuser = user 
    7474            lastpagecounter = counterbeforejob 
    7575        else :     
    7676            # get last values from Quota Storage 
    77             (lasthistoryid, lastjobid, lastuserid, lastusername, lastpagecounter) = (pgc["id"], pgc["jobid"], pgc["userid"], pgc["username"], pgc["pagecounter"]) 
     77            lastjob = printer.LastJob 
     78            lastuser = printer.LastJob.User 
     79            lastpagecounter = printer.LastJob.PrinterPageCounter 
    7880             
    7981        # if printer is off then we assume the correct counter value is the last one 
     
    107109            # For more accurate accounting, don't switch off your HP printers ! 
    108110            # explanation at : http://web.mit.edu/source/third/lprng/doc/LPRng-HOWTO-15.html 
    109             self.filter.logger.log_message(_("Error in page count value %i for user %s on printer %s") % (jobsize, lastusername, self.filter.printername), "error") 
     111            self.filter.logger.log_message(_("Error in page count value %i for user %s on printer %s") % (jobsize, lastuser.Name, self.filter.printername), "error") 
    110112            jobsize = abs(int((10 - abs(jobsize)) / 2))     # Workaround for HP printers' feature ! 
    111113             
    112114        # update the quota for the previous user on this printer  
    113         self.filter.storage.updateUserPQuota(lastuserid, printerid, jobsize) 
     115        lastuserquota = self.filter.storage.getUserPQuota(lastuser, printer) 
     116        if lastuserquota.Exists : 
     117            lastuserquota.increasePagesUsage(jobsize) 
    114118         
    115119        # update the last job size in the history 
    116         self.filter.storage.updateJobSizeInHistory(lasthistoryid, jobsize) 
     120        if printer.LastJob.Exists : 
     121            printer.LastJob.setSize(jobsize) 
    117122         
    118123        # warns the last user if he is over quota 
    119         self.filter.warnUserPQuota(lastusername, self.filter.printername) 
     124        if lastuserquota.Exists : 
     125            self.filter.warnUserPQuota(lastuserquota) 
    120126             
    121127        # Is the current user allowed to print at all ? 
    122         action = self.filter.warnUserPQuota(self.filter.username, self.filter.printername) 
     128        action = self.filter.warnUserPQuota(self.filter.storage.getUserPQuota(user, printer)) 
    123129         
    124130        # adds the current job to history     
    125         self.filter.storage.addJobToHistory(self.filter.jobid, self.filter.storage.getUserId(self.filter.username), printerid, counterbeforejob, action) 
     131        printer.addJobToHistory(self.filter.jobid, user, counterbeforejob, action) 
    126132             
    127133        return action