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: 6981 $"
36 (
37 COLUMN_ID,
38 COLUMN_USER,
39 COLUMN_ADDRESS,
40 ) = range(3)
41
42
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
139
140 GUIClass = HTPasswdCryptAdminGtk
141