1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import os
23
24 import gettext
25 import gtk
26
27 from twisted.internet import defer
28
29 from flumotion.common import errors, componentui
30 from flumotion.twisted import flavors
31 from flumotion.component.base.admin_gtk import BaseAdminGtk
32 from flumotion.component.base.baseadminnode import BaseAdminGtkNode
33
34 _ = gettext.gettext
35 __version__ = "$Rev$"
36 (
37 COLUMN_ID,
38 COLUMN_USER,
39 COLUMN_ADDRESS,
40 ) = range(3)
41
42
44
54
57
60
62 self.wtree = widgetTree
63
64 self.widget = self.wtree.get_widget('keycards-widget')
65 self.tree = self.wtree.get_widget('keycards-treeview')
66 self.tree.set_model(self.model)
67 self.tree.set_headers_clickable(True)
68 treeselection = self.tree.get_selection()
69 treeselection.set_mode(gtk.SELECTION_MULTIPLE)
70
71 button = self.wtree.get_widget('expire-button')
72 button.connect('clicked', self._expire_clicked, treeselection)
73
74 col = gtk.TreeViewColumn('ID', gtk.CellRendererText(), text=COLUMN_ID)
75 self.tree.append_column(col)
76 col = gtk.TreeViewColumn('user', gtk.CellRendererText(),
77 text=COLUMN_USER)
78 self.tree.append_column(col)
79 col = gtk.TreeViewColumn('address', gtk.CellRendererText(),
80 text=COLUMN_ADDRESS)
81 self.tree.append_column(col)
82
83 d = self.callRemote('getUIState')
84 d.addCallback(self._gotStateCallback)
85 d.addCallback(lambda x: self.widget)
86 return d
87
89
90
91 self._uiState = result
92 keycardsData = result.get('keycards')
93 self.debug('_gotState: got %d keycards' % len(keycardsData))
94
95 for data in keycardsData:
96 self._append(data)
97
99 (model, pathlist) = treeselection.get_selected_rows()
100 ids = []
101 for path in pathlist:
102 model_iter = model.get_iter(path)
103 ids.append(model.get_value(model_iter, COLUMN_ID))
104
105 self.debug('expiring %d keycards' % len(ids))
106
107 d = defer.succeed(None)
108 for keycard_id in ids:
109
110
111 d.addCallback(lambda res, i: self.callRemote('expireKeycardId', i),
112 keycard_id)
113
114 return d
115
117 keycard_id = data['id']
118 model_iter = self.model.append()
119
120 self._iters[keycard_id] = model_iter
121 self.model.set_value(model_iter, COLUMN_ID, keycard_id)
122
123 if 'username' in data.keys():
124 self.model.set_value(model_iter, COLUMN_USER, data['username'])
125 if 'address' in data.keys():
126 self.model.set_value(model_iter, COLUMN_ADDRESS, data['address'])
127
129 keycard_id = data['id']
130 model_iter = self._iters[keycard_id]
131 del self._iters[keycard_id]
132 self.model.remove(model_iter)
133
134
142
143 GUIClass = HTPasswdCryptAdminGtk
144