Printing/CupsChanges

= CUPS changes to be aware of =

This is a list of the changes to be aware of when using pycups to communicate with a CUPS server that may be 1.1.x, or may be 1.2.x.


 * cups.Connection.getDevices
 * In CUPS 1.2, devices like 'usb:/dev/usb/lp0' will not be present if there is no printer detected on that port
 * 'device-id' device attribute will not be present in CUPS 1.1.x


 * cups.Connection.getPrinters
 * 'printer-is-shared' attribute is new to CUPS 1.2.x, describing whether this printer is published in IPP browse packets, and whether jobs may be submitted remotely


 * cups.Connection.setPrinterShared will have no effect on CUPS 1.1.x servers but will not fail!  The only way to detect that it did not succeed is to check for the 'printer-is-shared' attribute in the getPrinters result.


 * cups.Connection.getPrinterAttributes
 * 'printer-error-policy-supported' will not be present in CUPS 1.1.x
 * 'printer-op-policy-supported' will not be present in CUPS 1.1.x
 * 'request-user-name-allowed' will not be present in CUPS 1.1.x, and will only be present in CUPS 1.2 if there are users in the restriction list (and it is marked 'allow')
 * 'request-user-name-denied' will not be present in CUPS 1.1.x, and will only be present in CUPS 1.2 if there are users in the restriction list (and it is marked 'deny')


 * cups.Connection.setPrinterErrorPolicy will have no effect on CUPS 1.1.x servers, and anyway there is no 'printer-error-policy-supported' attribute to pick a value from


 * cups.Connection.setPrinterOpPolicy will have no effect on CUPS 1.1.x servers, and anyway there is no 'printer-op-policy-supported' attribute to pick a value from


 * cups.Connection.setPrinterUsersAllowed/Denied will have no effect on CUPS 1.1.x servers, and the only way to detect that it has failed is to check the 'request-user-name-allowed' or 'request-user-name-denied' printer attributes.


 * cups.Connection.getPPDs
 * 'ppd-device-id' will only be present in CUPS 1.2