Changeset 1240 for pykota/trunk/pykota/storage.py
- Timestamp:
- 12/27/03 17:49:25 (20 years ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
pykota/trunk/pykota/storage.py
r1219 r1240 22 22 # 23 23 # $Log$ 24 # Revision 1.29 2003/12/27 16:49:25 uid67467 25 # Should be ok now. 26 # 24 27 # Revision 1.28 2003/11/25 23:46:40 jalet 25 28 # Don't try to verify if module name is valid, Python does this better than us. … … 248 251 self.HardLimit = None 249 252 self.DateLimit = None 253 self.ParentPrintersUserPQuota = (user.Exists and printer.Exists and parent.getParentPrintersUserPQuota(self)) or [] 250 254 251 255 def setDateLimit(self, datelimit) : … … 268 272 def increasePagesUsage(self, nbpages) : 269 273 """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) + nbpages273 newlifepagecounter = int(self.LifePageCounter or 0) + nbpages274 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, msg282 else :283 self.parent.commitTransaction()284 self.PageCounter = newpagecounter285 self.LifePageCounter = newlifepagecounter274 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() 286 290 287 291 class StorageGroupPQuota(StorageObject) : … … 344 348 self.tool.logdebug("Caching enabled.") 345 349 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 !" 346 354 347 355 def __del__(self) : … … 441 449 return user.Groups 442 450 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 443 458 def openConnection(pykotatool) : 444 459 """Returns a connection handle to the appropriate Quota Storage Database.""" … … 454 469 admin = backendinfo["storageadmin"] or backendinfo["storageuser"] 455 470 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) 457 472