home *** CD-ROM | disk | FTP | other *** search
- # Source Generated with Decompyle++
- # File: in.pyc (Python 2.6)
-
- from gettext import gettext as _
- import cupshelpers
-
- class PhysicalDevice:
-
- def __init__(self, device):
- self.devices = None
- self.add_device(device)
- self._user_data = { }
-
-
- def _canonical_id(self, device):
- mfg = device.id_dict.get('MFG', '')
- mdl = device.id_dict.get('MDL', '')
- if mfg == '' or mdl.lower().startswith(mfg.lower()):
- make_and_model = mdl
- else:
- make_and_model = '%s %s' % (mfg, mdl)
- return cupshelpers.ppds.ppdMakeModelSplit(make_and_model)
-
-
- def add_device(self, device):
- (mfg, mdl) = self._canonical_id(device)
- if self.devices == None:
- self.mfg = mfg
- self.mdl = mdl
- self.mfg_lower = mfg.lower()
- self.mdl_lower = mdl.lower()
- self.sn = device.id_dict.get('SN', '')
- self.devices = []
- else:
-
- def nicest(a, b):
-
- def count_lower(s):
- l = s.lower()
- n = 0
- for i in xrange(len(s)):
- if l[i] != s[i]:
- n += 1
- continue
-
- return n
-
- if count_lower(b) < count_lower(a):
- return b
- return a
-
- self.mfg = nicest(self.mfg, mfg)
- self.mdl = nicest(self.mdl, mdl)
- sn = device.id_dict.get('SN', '')
- if sn != '' and self.sn != '' and sn != self.sn:
- raise RuntimeError
- sn != self.sn
- self.devices.append(device)
- self.devices.sort()
-
-
- def get_devices(self):
- return self.devices
-
-
- def get_info(self):
- if (self.mfg == '' or self.mfg == 'HP') and self.mdl == 'Fax':
- return self.devices[0].info
- info = '%s %s' % (self.mfg, self.mdl)
- if len(self.sn) > 0:
- info += ' (%s)' % self.sn
-
- return info
-
-
- def set_data(self, key, value):
- self._user_data[key] = value
-
-
- def get_data(self, key):
- return self._user_data.get(key)
-
-
- def __str__(self):
- return '(description: %s)' % self.__repr__()
-
-
- def __repr__(self):
- return '<PhysicalDevice.PhysicalDevice (%s,%s,%s)>' % (self.mfg, self.mdl, self.sn)
-
-
- def __cmp__(self, other):
- if other == None or type(other) != type(self):
- return 1
- if (other.mfg == '' or other.mdl == '' or self.mfg == '') and self.mdl == '':
- if other.mfg == '' and other.mdl == '' and self.mfg == '' and self.mdl == '':
- return cmp(self.devices[0], other.devices[0])
- if other.mfg == '' and other.mdl == '':
- return -1
- return 1
- (our_mfg, our_mdl) = cupshelpers.ppds.ppdMakeModelSplit(our_make_and_model)
- if other.mfg == '' or other.mdl.lower().startswith(other.mfg.lower()):
- other_make_and_model = other.mdl
- else:
- other_make_and_model = '%s %s' % (other.mfg, other.mdl)
- (other_mfg, other_mdl) = cupshelpers.ppds.ppdMakeModelSplit(other_make_and_model)
- mfgcmp = cmp(our_mfg.lower(), other_mfg.lower())
- if mfgcmp != 0:
- return mfgcmp
- mdlcmp = cmp(our_mdl.lower(), other_mdl.lower())
- if mdlcmp != 0:
- return mdlcmp
- if self.sn == '' or other.sn == '':
- return 0
- return cmp(self.sn, other.sn)
-
-
- if __name__ == '__main__':
- import authconn
- c = authconn.Connection()
- devices = cupshelpers.getDevices(c)
- physicaldevices = []
- for device in devices.values():
- physicaldevice = PhysicalDevice(device)
-
- try:
- i = physicaldevices.index(physicaldevice)
- physicaldevices[i].add_device(device)
- continue
- except ValueError:
- physicaldevices.append(physicaldevice)
- continue
-
-
-
- physicaldevices.sort()
- for physicaldevice in physicaldevices:
- print physicaldevice.get_info()
- devices = physicaldevice.get_devices()
- for device in devices:
- print ' ', device
-
-
-
-