Index: pykota/trunk/pykota/storages/sql.py
===================================================================
--- pykota/trunk/pykota/storages/sql.py (revision 2678)
+++ pykota/trunk/pykota/storages/sql.py (revision 2686)
@@ -547,20 +547,13 @@
         return self.getGroupPQuota(group, printer)
         
-    def writePrinterPrices(self, printer) :    
-        """Write the printer's prices back into the storage."""
-        self.doModify("UPDATE printers SET priceperpage=%s, priceperjob=%s WHERE id=%s" % (self.doQuote(printer.PricePerPage), self.doQuote(printer.PricePerJob), self.doQuote(printer.ident)))
-        
-    def writePrinterDescription(self, printer) :    
-        """Write the printer's description back into the storage."""
-        description = self.userCharsetToDatabase(printer.Description)
-        self.doModify("UPDATE printers SET description=%s WHERE id=%s" % (self.doQuote(description), self.doQuote(printer.ident)))
-        
-    def setPrinterMaxJobSize(self, printer, maxjobsize) :     
-        """Write the printer's maxjobsize attribute."""
-        self.doModify("UPDATE printers SET maxjobsize=%s WHERE id=%s" % (self.doQuote(maxjobsize), self.doQuote(printer.ident)))
-        
-    def setPrinterPassThroughMode(self, printer, passthrough) :
-        """Write the printer's passthrough attribute."""
-        self.doModify("UPDATE printers SET passthrough=%s WHERE id=%s" % (self.doQuote((passthrough and "t") or "f"), self.doQuote(printer.ident)))
+    def savePrinter(self, printer) :    
+        """Saves the printer to the database in a single operation."""
+        self.doModify("UPDATE printers SET passthrough=%s, maxjobsize=%s, description=%s, priceperpage=%s, priceperjob=%s WHERE id=%s" \
+                              % (self.doQuote((printer.PassThrough and "t") or "f"), \
+                                 self.doQuote(printer.MaxJobSize), \
+                                 self.doQuote(self.userCharsetToDatabase(printer.Description)), \
+                                 self.doQuote(printer.PricePerPage), \
+                                 self.doQuote(printer.PricePerJob), \
+                                 self.doQuote(printer.ident)))
         
     def writeUserOverCharge(self, user, factor) :
Index: pykota/trunk/pykota/storages/ldapstorage.py
===================================================================
--- pykota/trunk/pykota/storages/ldapstorage.py (revision 2680)
+++ pykota/trunk/pykota/storages/ldapstorage.py (revision 2686)
@@ -1017,31 +1017,12 @@
         return self.getGroupPQuota(group, printer)
         
-    def writePrinterPrices(self, printer) :    
-        """Write the printer's prices back into the storage."""
+    def savePrinter(self, printer) :    
+        """Saves the printer to the database in a single operation."""
         fields = {
+                   "pykotaPassThrough" : (printer.PassThrough and "t") or "f",
+                   "pykotaMaxJobSize" : (printer.MaxJobSize and str(printer.MaxJobSize)) or "0",
+                   "description" : self.userCharsetToDatabase(printer.Description or ""),
                    "pykotaPricePerPage" : str(printer.PricePerPage),
                    "pykotaPricePerJob" : str(printer.PricePerJob),
-                 }
-        self.doModify(printer.ident, fields)
-        
-    def writePrinterDescription(self, printer) :    
-        """Write the printer's description back into the storage."""
-        fields = {
-                   "description" : self.userCharsetToDatabase(printer.Description or ""),
-                 }
-        if fields["description"] :
-            self.doModify(printer.ident, fields)
-            
-    def setPrinterMaxJobSize(self, printer, maxjobsize) :     
-        """Write the printer's maxjobsize attribute."""
-        fields = {
-                   "pykotaMaxJobSize" : (maxjobsize and str(maxjobsize)) or "0",
-                 }
-        self.doModify(printer.ident, fields)
-        
-    def setPrinterPassThroughMode(self, printer, passthrough) :
-        """Write the printer's passthrough attribute."""
-        fields = {
-                   "pykotaPassThrough" : (passthrough and "t") or "f",
                  }
         self.doModify(printer.ident, fields)
