first public release of samba4 code
[jelmer/samba4-debian.git] / source / python / samba / printerdata.py
1 #!/usr/bin/env python
2
3 #
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
7 #
8
9 #
10 # TODO:
11 #
12 #   - Implement __delitem__
13 #
14
15 from samba import spoolss
16
17 class printerdata:
18     def __init__(self, host, creds = {}):
19         self.hnd = spoolss.openprinter(host, creds = creds)
20
21     def keys(self):
22         return self.hnd.enumprinterdata().keys()
23
24     def __getitem__(self, key):
25         return self.hnd.getprinterdata(key)['data']
26
27     def __setitem__(self, key, value):
28         # Store as REG_BINARY for now
29         self.hnd.setprinterdata({"key": "", "value": key, "type": 3,
30                                  "data": value})
31         
32 class printerdata_ex:
33     def __init__(self, host):
34         self.host = host
35         self.top_level_keys = ["PrinterDriverData", "DsSpooler", "DsDriver",
36                                "DsUser"]
37
38     def keys(self):
39         return self.top_level_keys
40
41     def has_key(self, key):
42         for k in self.top_level_keys:
43             if k == key:
44                 return 1
45         return 0
46
47     class printerdata_ex_subkey:
48         def __init__(self, host, key):
49             self.hnd = spoolss.openprinter(host)
50             self.key = key
51
52         def keys(self):
53             return self.hnd.enumprinterdataex(self.key).keys()
54
55         def __getitem__(self, key):
56             return self.hnd.getprinterdataex(self.key, key)['data']
57
58     def __getitem__(self, key):
59         return self.printerdata_ex_subkey(self.host, key)