Merge lp:~max-rabkin/ibid/perm-check-725240 into lp:~ibid-core/ibid/old-trunk-1.6

Proposed by Max Rabkin
Status: Merged
Approved by: Stefano Rivera
Approved revision: 1017
Merged at revision: 1025
Proposed branch: lp:~max-rabkin/ibid/perm-check-725240
Merge into: lp:~ibid-core/ibid/old-trunk-1.6
Diff against target: 44 lines (+15/-10)
1 file modified
ibid/plugins/identity.py (+15/-10)
To merge this branch: bzr merge lp:~max-rabkin/ibid/perm-check-725240
Reviewer Review Type Date Requested Status
Jonathan Hitchcock Approve
Stefano Rivera Approve
Review via email: mp+51383@code.launchpad.net

Commit message

Check granted/revoked permission against list of all permissions (and make retrieving permissions list take linear time)

To post a comment you must log in.
1017. By Max Rabkin

Check name, not permission

Revision history for this message
Stefano Rivera (stefanor) :
review: Approve
Revision history for this message
Jonathan Hitchcock (vhata) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'ibid/plugins/identity.py'
2--- ibid/plugins/identity.py 2010-04-26 10:19:16 +0000
3+++ ibid/plugins/identity.py 2011-02-27 16:07:18 +0000
4@@ -582,6 +582,10 @@
5
6 else:
7 if not permission:
8+ if name.lower() not in self.all_perms():
9+ event.addresponse(u"I don't know about a permission "
10+ u"called '%s'", name)
11+ return
12 permission = Permission(name)
13 account.permissions.append(permission)
14
15@@ -629,18 +633,19 @@
16 permissions = sorted(u'%s%s' % (permission_values[perm.value], perm.name) for perm in account.permissions)
17 event.addresponse(u'Permissions: %s', human_join(permissions) or u'none')
18
19+ def all_perms(self):
20+ permissions = set()
21+ for processor in ibid.processors:
22+ if hasattr(processor, 'permission'):
23+ permissions.add(processor.permission)
24+ if hasattr(processor, 'permissions'):
25+ for permission in processor.permissions:
26+ permissions.add(permission)
27+ return permissions
28+
29 @match(r'^list\s+permissions$')
30 def list_permissions(self, event):
31- permissions = []
32- for processor in ibid.processors:
33- if hasattr(processor, 'permission') and getattr(processor, 'permission') not in permissions:
34- permissions.append(getattr(processor, 'permission'))
35- if hasattr(processor, 'permissions'):
36- for permission in getattr(processor, 'permissions'):
37- if permission not in permissions:
38- permissions.append(permission)
39-
40- event.addresponse(u'Permissions: %s', human_join(sorted(permissions)) or u'none')
41+ event.addresponse(u'Permissions: %s', human_join(sorted(self.all_perms())) or u'none')
42
43 class Auth(Processor):
44 usage = u'auth <credential>'

Subscribers

People subscribed via source and target branches