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