26 | | from pykota.storage import PyKotaStorageError,BaseStorage,StorageObject,StorageUser,StorageGroup,StoragePrinter,StorageJob,StorageLastJob,StorageUserPQuota,StorageGroupPQuota |
| 26 | from pykota.storage import PyKotaStorageError, BaseStorage, StorageObject, \ |
| 27 | StorageUser, StorageGroup, StoragePrinter, \ |
| 28 | StorageJob, StorageLastJob, StorageUserPQuota, \ |
| 29 | StorageGroupPQuota, StorageBillingCode |
| 219 | |
| 220 | def getBillingCodeFromBackend(self, label) : |
| 221 | """Extracts a billing code information given its name.""" |
| 222 | code = StorageBillingCode(self, label) |
| 223 | result = self.doSearch("SELECT * FROM billingcodes WHERE billingcode=%s LIMIT 1" % self.doQuote(label)) |
| 224 | if result : |
| 225 | fields = result[0] |
| 226 | code.ident = fields.get("id") |
| 227 | code.BillingCode = fields.get("billingcode", label) |
| 228 | code.Description = self.databaseToUserCharset(fields.get("description") or "") |
| 229 | code.Balance = fields.get("balance") or 0.0 |
| 230 | code.PageCounter = fields.get("pagecounter") or 0 |
| 231 | code.Exists = 1 |
| 232 | return code |
| 356 | |
| 357 | def getMatchingBillingCodes(self, billingcodepattern) : |
| 358 | """Returns the list of all billing codes for which the label matches a certain pattern.""" |
| 359 | codes = [] |
| 360 | result = self.doSearch("SELECT * FROM billingcodes") |
| 361 | if result : |
| 362 | for record in result : |
| 363 | if self.tool.matchString(record["billingcode"], billingcodepattern.split(",")) : |
| 364 | code = StorageBillingCode(self, record["billingcode"]) |
| 365 | code.ident = record.get("id") |
| 366 | code.Balance = record.get("balance") or 0.0 |
| 367 | code.PageCounter = record.get("pagecounter") or 0 |
| 368 | code.Description = self.databaseToUserCharset(record.get("description") or "") |
| 369 | code.Exists = 1 |
| 370 | codes.append(code) |
| 371 | self.cacheEntry("BILLINGCODES", code.BillingCode, code) |
| 372 | return codes |
380 | 427 | self.doModify("INSERT INTO users (username, limitby, balance, lifetimepaid, email, overcharge) VALUES (%s, %s, %s, %s, %s, %s)" % (self.doQuote(user.Name), self.doQuote(user.LimitBy or 'quota'), self.doQuote(user.AccountBalance or 0.0), self.doQuote(user.LifeTimePaid or 0.0), self.doQuote(user.Email), self.doQuote(user.OverCharge))) |
381 | 428 | return self.getUser(user.Name) |
382 | 429 | |
383 | 430 | def addGroup(self, group) : |
| 491 | |
| 492 | def writeBillingCodeDescription(self, code) : |
| 493 | """Sets the new description for a billing code.""" |
| 494 | self.doModify("UPDATE billingcodes SET description=%s WHERE id=%s" % (self.doQuote(self.userCharsetToDatabase(code.Description or "")), self.doQuote(code.ident))) |
| 495 | |
| 496 | def setBillingCodeValues(self, code, newbalance, newpagecounter) : |
| 497 | """Sets the new page counter and balance for a billing code.""" |
| 498 | self.doModify("UPDATE billingcodes SET balance=%s, pagecounter=%s WHERE id=%s" % (self.doQuote(newbalance), self.doQuote(newpagecounter), self.doQuote(code.ident))) |
| 499 | |
| 500 | def consumeBillingCode(self, code, balance, pagecounter) : |
| 501 | """Consumes from a billing code.""" |
| 502 | self.doModify("UPDATE billingcodes SET balance=balance + %s, pagecounter=pagecounter + %s WHERE id=%s" % (self.doQuote(balance), self.doQuote(pagecounter), self.doQuote(code.ident))) |