Blob Blame History Raw
diff -up system-config-printer-1.1.16/cupshelpers/ppds.py.foomatic-recommended system-config-printer-1.1.16/cupshelpers/ppds.py
--- system-config-printer-1.1.16/cupshelpers/ppds.py.foomatic-recommended	2009-12-22 14:27:37.000000000 +0000
+++ system-config-printer-1.1.16/cupshelpers/ppds.py	2009-12-23 16:13:13.234214808 +0000
@@ -248,14 +248,25 @@ def _getDriverType (ppdname, ppds=None):
         # Foomatic (generated) -- but which driver?
         if ppdname.find ("Generic")!= -1:
             return DRIVER_TYPE_FOOMATIC_GENERIC
-        if (ppds != None and
-            ppds.getInfoFromPPDName (ppdname).\
-            get ('ppd-make-and-model', '').find ("(recommended)") != -1):
-            if ppds.getInfoFromPPDName (ppdname).\
-               get ('ppd-make-and-model', '').find ("Postscript") != -1:
-                return DRIVER_TYPE_FOOMATIC_RECOMMENDED_POSTSCRIPT
-            else:
-                return DRIVER_TYPE_FOOMATIC_RECOMMENDED_NON_POSTSCRIPT
+        if ppds != None:
+            info = ppds.getInfoFromPPDName (ppdname)
+            device_id = info.get ('ppd-device-id', '')
+            id_dict = parseDeviceID (device_id)
+            drv = id_dict.get ('DRV', '')
+            drvfields = dict()
+            for field in drv.split (','):
+                if len (field) == 0:
+                    continue
+                key = field[0]
+                drvfields[key] = field[1:]
+
+            ppd_make_and_model = info.get ('ppd-make-and-model', '')
+            if (drvfields.get ('R', '0') == '1' or
+                ppd_make_and_model.find ("(recommended)") != -1):
+                if ppd_make_and_model.find ("Postscript") != -1:
+                    return DRIVER_TYPE_FOOMATIC_RECOMMENDED_POSTSCRIPT
+                else:
+                    return DRIVER_TYPE_FOOMATIC_RECOMMENDED_NON_POSTSCRIPT
         if ppdname.find ("-Postscript")!= -1:
             return DRIVER_TYPE_FOOMATIC_PS
         if ppdname.find ("-hpijs") != -1: