4 # A python module that maps printerdata to a dictionary. We define
5 # two classes. The printerdata class maps to Get/Set/Enum/DeletePrinterData
6 # and the printerdata_ex class maps to Get/Set/Enum/DeletePrinterDataEx
12 # - Implement __delitem__
15 from samba import spoolss
18 def __init__(self, host, creds = {}):
19 self.hnd = spoolss.openprinter(host, creds = creds)
22 return self.hnd.enumprinterdata().keys()
24 def __getitem__(self, key):
25 return self.hnd.getprinterdata(key)['data']
27 def __setitem__(self, key, value):
28 # Store as REG_BINARY for now
29 self.hnd.setprinterdata({"key": "", "value": key, "type": 3,
33 def __init__(self, host):
35 self.top_level_keys = ["PrinterDriverData", "DsSpooler", "DsDriver",
39 return self.top_level_keys
41 def has_key(self, key):
42 for k in self.top_level_keys:
47 class printerdata_ex_subkey:
48 def __init__(self, host, key):
49 self.hnd = spoolss.openprinter(host)
53 return self.hnd.enumprinterdataex(self.key).keys()
55 def __getitem__(self, key):
56 return self.hnd.getprinterdataex(self.key, key)['data']
58 def __getitem__(self, key):
59 return self.printerdata_ex_subkey(self.host, key)