Changeset 2054 for pykota/trunk/pykota/storage.py
- Timestamp:
- 02/13/05 23:02:29 (19 years ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
pykota/trunk/pykota/storage.py
r2030 r2054 22 22 # 23 23 # $Log$ 24 # Revision 1.68 2005/02/13 22:02:29 jalet 25 # Big database structure changes. Upgrade script is now included as well as 26 # the new LDAP schema. 27 # Introduction of the -o | --overcharge command line option to edpykota. 28 # The output of repykota is more complete, but doesn't fit in 80 columns anymore. 29 # Introduction of the new 'maxdenybanners' directive. 30 # 24 31 # Revision 1.67 2005/01/18 19:47:50 jalet 25 32 # Big bug fix wrt the datelimit attribute … … 276 283 self.LifeTimePaid = None 277 284 self.Email = None 285 self.OverCharge = 1.0 278 286 self.Payments = [] # TODO : maybe handle this smartly for SQL, for now just don't retrieve them 279 287 … … 308 316 self.LimitBy = limitby 309 317 318 def setOverChargeFactor(self, factor) : 319 """Sets the user's overcharging coefficient.""" 320 self.parent.writeUserOverCharge(self, factor) 321 self.OverCharge = factor 322 310 323 def delete(self) : 311 324 """Deletes an user from the Quota Storage.""" … … 357 370 self.PricePerJob = None 358 371 self.Description = None 372 self.Coefficients = None 359 373 360 374 def __getattr__(self, name) : … … 424 438 self.HardLimit = None 425 439 self.DateLimit = None 440 self.WarnCount = None 426 441 427 442 def __getattr__(self, name) : … … 445 460 self.HardLimit = hardlimit 446 461 self.DateLimit = None 462 self.WarnCount = 0 447 463 448 464 def setUsage(self, used) : … … 454 470 self.parent.increaseUserPQuotaPagesCounters(self, vused) 455 471 self.parent.writeUserPQuotaDateLimit(self, None) 472 self.parent.writeUserPQuotaWarnCount(self, 0) 456 473 except PyKotaStorageError, msg : 457 474 self.parent.rollbackTransaction() … … 465 482 self.PageCounter = self.LifePageCounter = vused 466 483 self.DateLimit = None 484 self.WarnCount = 0 467 485 486 def warn(self) : 487 """Increases the warn counter for this user quota.""" 488 self.parent.increaseUserPQuotaWarnCount(self) 489 self.WarnCount = (self.WarnCount or 0) + 1 490 468 491 def reset(self) : 469 492 """Resets page counter to 0.""" … … 482 505 totalprice = 0.0 483 506 if jobsize : 484 for upq in [ self ] + self.ParentPrintersUserPQuota : 485 price = (float(upq.Printer.PricePerPage or 0.0) * jobsize) + float(upq.Printer.PricePerJob or 0.0) 486 totalprice += price 487 return totalprice 507 if self.User.OverCharge != 0.0 : # optimization, but TODO : beware of rounding errors 508 for upq in [ self ] + self.ParentPrintersUserPQuota : 509 price = (float(upq.Printer.PricePerPage or 0.0) * jobsize) + float(upq.Printer.PricePerJob or 0.0) 510 totalprice += price 511 if self.User.OverCharge != 1.0 : # TODO : beware of rounding errors 512 overcharged = totalprice * self.User.OverCharge 513 self.parent.tool.printInfo("Overcharging %s by a factor of %s ===> User %s will be charged for %s units." % (totalprice, self.User.OverCharge, self.User.Name, overcharged)) 514 return overcharged 515 else : 516 return totalprice 488 517 489 518 def increasePagesUsage(self, jobsize) : … … 589 618 self.JobOptions = None 590 619 self.JobHostName = None 620 self.JobMD5Sum = None 621 self.JobPages = None 622 self.JobBillingCode = None 591 623 592 624 def __getattr__(self, name) :