Show
Ignore:
Timestamp:
12/27/03 17:49:25 (20 years ago)
Author:
uid67467
Message:

Should be ok now.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • pykota/trunk/pykota/storage.py

    r1219 r1240  
    2222# 
    2323# $Log$ 
     24# Revision 1.29  2003/12/27 16:49:25  uid67467 
     25# Should be ok now. 
     26# 
    2427# Revision 1.28  2003/11/25 23:46:40  jalet 
    2528# Don't try to verify if module name is valid, Python does this better than us. 
     
    248251        self.HardLimit = None 
    249252        self.DateLimit = None 
     253        self.ParentPrintersUserPQuota = (user.Exists and printer.Exists and parent.getParentPrintersUserPQuota(self)) or [] 
    250254         
    251255    def setDateLimit(self, datelimit) :     
     
    268272    def increasePagesUsage(self, nbpages) : 
    269273        """Increase the value of used pages and money.""" 
    270         if nbpages : 
    271             jobprice = (float(self.Printer.PricePerPage or 0.0) * nbpages) + float(self.Printer.PricePerJob or 0.0) 
    272             newpagecounter = int(self.PageCounter or 0) + nbpages 
    273             newlifepagecounter = int(self.LifePageCounter or 0) + nbpages 
    274             self.parent.beginTransaction() 
    275             try : 
    276                 if jobprice : # optimization : don't access the database if unneeded. 
    277                     self.User.consumeAccountBalance(jobprice) 
    278                 self.parent.writeUserPQuotaPagesCounters(self, newpagecounter, newlifepagecounter) 
    279             except PyKotaStorageError, msg :     
    280                 self.parent.rollbackTransaction() 
    281                 raise PyKotaStorageError, msg 
    282             else :     
    283                 self.parent.commitTransaction() 
    284                 self.PageCounter = newpagecounter 
    285                 self.LifePageCounter = newlifepagecounter 
     274        jobprice = (float(self.Printer.PricePerPage or 0.0) * nbpages) + float(self.Printer.PricePerJob or 0.0) 
     275        self.parent.beginTransaction() 
     276        try : 
     277            if nbpages : 
     278                self.User.consumeAccountBalance(jobprice) 
     279                for upq in [ self ] + self.ParentPrintersUserPQuota : 
     280                    newpagecounter = int(upq.PageCounter or 0) + nbpages 
     281                    newlifepagecounter = int(upq.LifePageCounter or 0) + nbpages 
     282                    self.parent.writeUserPQuotaPagesCounters(upq, newpagecounter, newlifepagecounter) 
     283                    upq.PageCounter = newpagecounter 
     284                    upq.LifePageCounter = newlifepagecounter 
     285        except PyKotaStorageError, msg :     
     286            self.parent.rollbackTransaction() 
     287            raise PyKotaStorageError, msg 
     288        else :     
     289            self.parent.commitTransaction() 
    286290         
    287291class StorageGroupPQuota(StorageObject) : 
     
    344348            self.tool.logdebug("Caching enabled.") 
    345349            self.caches = { "USERS" : {}, "GROUPS" : {}, "PRINTERS" : {}, "USERPQUOTAS" : {}, "GROUPPQUOTAS" : {}, "JOBS" : {}, "LASTJOBS" : {} } 
     350         
     351    def close(self) :     
     352        """Must be overriden in children classes.""" 
     353        raise RuntimeError, "BaseStorage.close() must be overriden !" 
    346354         
    347355    def __del__(self) :         
     
    441449        return user.Groups    
    442450         
     451    def getParentPrintersUserPQuota(self, userpquota) :      
     452        """Returns all user print quota on the printer and its parents.""" 
     453        upquotas = [ ] 
     454        for printer in self.getParentPrinters(userpquota.Printer) : 
     455            upquotas.append(self.getUserPQuota(userpquota.User, printer)) 
     456        return upquotas         
     457         
    443458def openConnection(pykotatool) : 
    444459    """Returns a connection handle to the appropriate Quota Storage Database.""" 
     
    454469        admin = backendinfo["storageadmin"] or backendinfo["storageuser"] 
    455470        adminpw = backendinfo["storageadminpw"] or backendinfo["storageuserpw"] 
    456         return getattr(storagebackend, "Storage")(pykotatool, host, database, admin, adminpw) 
     471        return storagebackend.Storage(pykotatool, host, database, admin, adminpw) 
    457472