source: tools/policy/new_credential.py @ e69367b

gec13
Last change on this file since e69367b was a5339eb, checked in by Ted Faber <faber@…>, 12 years ago

Action inputs and outputs

  • Property mode set to 100644
File size: 3.7 KB
Line 
1#!/usr/local/bin/python
2
3import gtk
4
5def frame_it(w, name):
6    f = gtk.Frame(name)
7    f.add(w)
8    return f
9
10class add_credential_dialog(gtk.Dialog):
11
12
13    def completion_entry(self, store):
14        rv = gtk.Entry()
15        comp = gtk.EntryCompletion()
16        comp.set_inline_completion(True)
17        comp.set_text_column(0)
18        comp.set_model(store)
19        rv.set_completion(comp)
20        return rv
21
22    def __init__(self, parent, policy):
23        gtk.Dialog.__init__(self, 'Add Credential', parent, gtk.DIALOG_MODAL,(
24            gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,
25            gtk.STOCK_OK, gtk.RESPONSE_OK))
26
27        hb = gtk.HBox()
28        roles = [ x for x in policy.roles ]
29        roles.sort()
30        self.role_list = gtk.ListStore(str)
31        for r in roles:
32            self.role_list.append([r])
33        self.principal_list = gtk.ListStore(str)
34        for k, n in policy.principal_items():
35            self.principal_list.append([n])
36
37        self.issuer = gtk.combo_box_new_text()
38        issuer_list = [] 
39        for a in [ policy.replace_keyids(i) for i in policy.issuers.keys()]:
40            issuer_list.append(a)
41        issuer_list.sort()
42        for i in issuer_list:
43            self.issuer.append_text(i)
44
45        self.issuer.set_active(0)
46        hb.pack_start(frame_it(self.issuer, "Issuer"))
47
48        self.role = self.completion_entry(self.role_list)
49
50        hb.pack_start(frame_it(self.role, "Role to assign"))
51
52        self.vbox.pack_start(hb)
53
54        vb = gtk.VBox()
55        hb = gtk.HBox()
56
57        self.mechanism = gtk.combo_box_new_text()
58        self.mechanism.append_text('Direct assignment')
59        self.mechanism.append_text('Direct delegation')
60        self.mechanism.append_text('Delegation to role')
61        self.mechanism.set_active(0)
62        self.mechanism.connect('changed', self.changed)
63        vb.pack_start(frame_it(self.mechanism, "Mechanism"), False, False)
64        vb.pack_start(gtk.HBox(), True, True)
65        hb.pack_start(vb)
66
67        vb = gtk.VBox()
68        self.subject_link = self.completion_entry(self.role_list)
69        self.slf = frame_it(self.subject_link, "Delegator Role")
70        vb.pack_start(self.slf)
71        self.subject_role = self.completion_entry(self.role_list)
72        self.srf = frame_it(self.subject_role, "Delegation Role")
73        vb.pack_start(self.srf)
74        self.subject_principal = self.completion_entry(self.principal_list)
75        self.spf = frame_it(self.subject_principal, "Principal")
76        vb.pack_start(self.spf)
77
78        self.srf.set_sensitive(False)
79        self.slf.set_sensitive(False)
80
81        hb.pack_start(vb)
82
83        self.vbox.pack_start(hb, False, False)
84
85        self.show_all()
86
87    def changed(self, cb):
88        mode = cb.get_active_text()
89        if mode == 'Direct assignment':
90            self.spf.set_sensitive(True)
91            self.srf.set_sensitive(False)
92            self.slf.set_sensitive(False)
93        elif mode == 'Direct delegation':
94            self.spf.set_sensitive(True)
95            self.srf.set_sensitive(True)
96            self.slf.set_sensitive(False)
97        elif mode == 'Delegation to role':
98            self.spf.set_sensitive(True)
99            self.srf.set_sensitive(True)
100            self.slf.set_sensitive(True)
101
102class add_principal_dialog(gtk.Dialog):
103    def __init__(self, parent):
104        gtk.Dialog.__init__(self, 'Add Principal', parent, gtk.DIALOG_MODAL,(
105            gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,
106            gtk.STOCK_OK, gtk.RESPONSE_OK))
107        self.pname = gtk.Entry()
108        self.vbox.pack_start(frame_it(self.pname, 'Principal Name'))
109        self.show_all()
110
111
112class mark_action_dialog(gtk.Dialog):
113    def __init__(self, parent, policy):
114        gtk.Dialog.__init__(self, 'Mark Action', parent, gtk.DIALOG_MODAL,(
115            gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,
116            gtk.STOCK_OK, gtk.RESPONSE_OK))
117
118        self.action = gtk.combo_box_new_text()
119        self.rmap = { }
120
121        for c in policy.credentials():
122            h = c.head()
123            self.rmap[policy.replace_keyids(h.string())] = h.string()
124       
125        roles = [x for x in self.rmap.keys() ]
126        roles.sort()
127
128        for r in roles:
129            self.action.append_text(r)
130        self.action.set_active(0)
131        self.vbox.pack_start(frame_it(self.action, "Attribute to mark"))
132        self.show_all()
133
134    def get_value(self):
135        return self.rmap.get(self.action.get_active_text(), None)
Note: See TracBrowser for help on using the repository browser.