| 803 | def deleteInTransaction(self, queries) : |
| 804 | """Does many deletions in a single transaction.""" |
| 805 | self.beginTransaction() |
| 806 | try : |
| 807 | for q in queries : |
| 808 | self.doModify(q) |
| 809 | except : |
| 810 | self.rollbackTransaction() |
| 811 | raise |
| 812 | else : |
| 813 | self.commitTransaction() |
| 814 | |
| 815 | def deleteManyBillingCodesFromNames(self, billingcodes) : |
| 816 | """Deletes many billing codes from their names.""" |
| 817 | codelabels = ", ".join(["%s" % self.doQuote(b) for b in billingcodes]) |
| 818 | self.deleteInTransaction([ |
| 819 | "DELETE FROM billingcodes WHERE billingcode IN (%s)" % codelabels,]) |
| 820 | |
| 821 | def deleteManyUsersFromNames(self, usernames) : |
| 822 | """Deletes many users from their names.""" |
| 823 | usernames = ", ".join(["%s" % self.doQuote(u) for u in usernames]) |
| 824 | self.deleteInTransaction([ |
| 825 | "DELETE FROM payments WHERE userid IN (SELECT id FROM users WHERE username IN %s)" % usernames, |
| 826 | "DELETE FROM groupsmembers WHERE userid IN (SELECT id FROM users WHERE username IN %s)" % usernames, |
| 827 | "DELETE FROM jobhistory WHERE userid IN (SELECT id FROM users WHERE username IN %s)" % usernames, |
| 828 | "DELETE FROM userpquota WHERE userid IN (SELECT id FROM users WHERE username IN %s)" % usernames, |
| 829 | "DELETE FROM users WHERE username IN %s" % usernames,]) |
| 830 | |
| 831 | def deleteManyPrintersFromNames(self, printernames) : |
| 832 | """Deletes many printers from their names.""" |
| 833 | printernames = ", ".join(["%s" % self.doQuote(p) for p in printernames]) |
| 834 | self.deleteInTransaction([ |
| 835 | "DELETE FROM printergroupsmembers WHERE groupid=%s OR printerid=%s" % (self.doQuote(printer.ident), self.doQuote(printer.ident)), |
| 836 | "DELETE FROM jobhistory WHERE printerid=%s" % self.doQuote(printer.ident), |
| 837 | "DELETE FROM grouppquota WHERE printerid=%s" % self.doQuote(printer.ident), |
| 838 | "DELETE FROM userpquota WHERE printerid=%s" % self.doQuote(printer.ident), |
| 839 | "DELETE FROM printers WHERE id=%s" % self.doQuote(printer.ident),]) |
| 840 | |