Show
Ignore:
Timestamp:
02/06/03 10:19:02 (21 years ago)
Author:
jalet
Message:

More robust behavior (hopefully) when the user or printer is not managed
correctly by the Quota System : e.g. cupsFilter added in ppd file, but
printer and/or user not 'yet?' in storage.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • pykota/trunk/pykota/storages/sql.py

    r708 r713  
    1515# 
    1616# $Log$ 
     17# Revision 1.6  2003/02/06 09:19:02  jalet 
     18# More robust behavior (hopefully) when the user or printer is not managed 
     19# correctly by the Quota System : e.g. cupsFilter added in ppd file, but 
     20# printer and/or user not 'yet?' in storage. 
     21# 
    1722# Revision 1.5  2003/02/05 23:26:22  jalet 
    1823# Incorrect handling of grace delay 
     
    6065         
    6166    def addUserPQuota(self, username, printername) : 
    62         printerid = self.getPrinterId(printername) 
     67        (userid, printerid) = self.getUPIds(username, printername) 
    6368        if printerid is None :     
    6469            self.doQuery("INSERT INTO printers (printername) VALUES (%s);" % self.doQuote(printername)) 
    65             printerid = self.getPrinterId(printername) 
    66         userid = self.getUserId(username) 
    6770        if userid is None :     
    6871            self.doQuery("INSERT INTO users (username) VALUES (%s);" % self.doQuote(username)) 
    69             userid = self.getUserId(username) 
    70         if (printerid is not None) and (userid is not None) :     
     72        (userid, printerid) = self.getUPIds(username, printername) 
     73        if (userid is not None) and (printerid is not None) : 
    7174            return self.doQuery("INSERT INTO userpquota (userid, printerid) VALUES (%s, %s);" % (self.doQuote(userid), self.doQuote(printerid))) 
    7275         
     76    def getUPIds(self, username, printername) :     
     77        return (self.getUserId(username), self.getPrinterId(printername)) 
     78         
    7379    def getUserPQuota(self, username, printername) : 
    74         result = self.doQuery("SELECT pagecounter, softlimit, hardlimit, datelimit FROM userpquota WHERE userid=%s AND printerid=%s;" % (self.doQuote(self.getUserId(username)), self.doQuote(self.getPrinterId(printername)))) 
    75         try : 
    76             return self.doParseResult(result)[0] 
    77         except TypeError :      # Not found     
    78             return 
     80        (userid, printerid) = self.getUPIds(username, printername) 
     81        if (userid is not None) and (printerid is not None) : 
     82            result = self.doQuery("SELECT pagecounter, softlimit, hardlimit, datelimit FROM userpquota WHERE userid=%s AND printerid=%s;" % (self.doQuote(userid), self.doQuote(printerid))) 
     83            try : 
     84                return self.doParseResult(result)[0] 
     85            except TypeError :      # Not found     
     86                pass 
    7987         
    8088    def setUserPQuota(self, username, printername, softlimit, hardlimit) : 
    81         self.doQuery("UPDATE userpquota SET softlimit=%s, hardlimit=%s, datelimit=NULL WHERE userid=%s AND printerid=%s;" % (self.doQuote(softlimit), self.doQuote(hardlimit), self.doQuote(self.getUserId(username)), self.doQuote(self.getPrinterId(printername)))) 
     89        (userid, printerid) = self.getUPIds(username, printername) 
     90        if (userid is not None) and (printerid is not None) : 
     91            self.doQuery("UPDATE userpquota SET softlimit=%s, hardlimit=%s, datelimit=NULL WHERE userid=%s AND printerid=%s;" % (self.doQuote(softlimit), self.doQuote(hardlimit), self.doQuote(userid), self.doQuote(printerid))) 
    8292         
    8393    def updateUserPQuota(self, username, printername, pagecount) : 
    84         self.doQuery("UPDATE userpquota SET pagecounter=pagecounter+(%s) WHERE userid=%s AND printerid=%s;" % (self.doQuote(pagecount), self.doQuote(self.getUserId(username)), self.doQuote(self.getPrinterId(printername)))) 
     94        (userid, printerid) = self.getUPIds(username, printername) 
     95        if (userid is not None) and (printerid is not None) : 
     96            self.doQuery("UPDATE userpquota SET pagecounter=pagecounter+(%s) WHERE userid=%s AND printerid=%s;" % (self.doQuote(pagecount), self.doQuote(userid), self.doQuote(printerid))) 
    8597         
    8698    def buyUserPQuota(self, username, printername, pagebought) :