| 80 | def checkUserPQuota(self, username, printername) : |
| 81 | """Checks the user quota on a printer and deny or accept the job.""" |
| 82 | now = DateTime.now() |
| 83 | quota = self.storage.getUserPQuota(username, printername) |
| 84 | pagecounter = quota["pagecounter"] |
| 85 | softlimit = quota["softlimit"] |
| 86 | hardlimit = quota["hardlimit"] |
| 87 | datelimit = quota["datelimit"] |
| 88 | if datelimit : |
| 89 | datelimit = DateTime.DateTime(datelimit) # TODO : check this ! |
| 90 | if softlimit is not None : |
| 91 | if pagecounter < softlimit : |
| 92 | action = "ALLOW" |
| 93 | elif hardlimit is not None : |
| 94 | if softlimit <= pagecounter < hardlimit : |
| 95 | if datelimit is None : |
| 96 | self.storage.doQuery("UPDATE userpquota SET datelimit=%s::DATETIME WHERE userid=%s AND printerid=%s;" % (self.doQuote("%04i-%02i-%02i %02i:%02i" % (now.year, now.month, now.day, now.hour, now.minute)), self.doQuote(self.getUserId(username)), self.doQuote(self.getPrinterId(printername)))) |
| 97 | datelimit = now |
| 98 | if (now - datelimit) <= self.config.getGraceDelay() : |
| 99 | action = "WARN" |
| 100 | else : |
| 101 | action = "DENY" |
| 102 | else : |
| 103 | action = "DENY" |
| 104 | else : |
| 105 | action = "DENY" |
| 106 | else : |
| 107 | action = "ALLOW" |
| 108 | return (action, (hardlimit - pagecounter), datelimit) |
| 109 | |