本文整理汇总了Python中trac.perm.PermissionSystem.revoke_permission方法的典型用法代码示例。如果您正苦于以下问题:Python PermissionSystem.revoke_permission方法的具体用法?Python PermissionSystem.revoke_permission怎么用?Python PermissionSystem.revoke_permission使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类trac.perm.PermissionSystem
的用法示例。
在下文中一共展示了PermissionSystem.revoke_permission方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: setUp
# 需要导入模块: from trac.perm import PermissionSystem [as 别名]
# 或者: from trac.perm.PermissionSystem import revoke_permission [as 别名]
def setUp(self):
self.env = EnvironmentStub(
enable=['trac.*', 'tractags.*'])
self.env.path = tempfile.mkdtemp()
self.tag_s = TagSystem(self.env)
self.tag_rh = TagRequestHandler(self.env)
self.db = self.env.get_db_cnx()
setup = TagSetup(self.env)
# Current tractags schema is setup with enabled component anyway.
# Revert these changes for getting a clean setup.
self._revert_tractags_schema_init()
setup.upgrade_environment(self.db)
perms = PermissionSystem(self.env)
# Revoke default permissions, because more diversity is required here.
perms.revoke_permission('anonymous', 'TAGS_VIEW')
perms.revoke_permission('authenticated', 'TAGS_MODIFY')
perms.grant_permission('reader', 'TAGS_VIEW')
perms.grant_permission('writer', 'TAGS_MODIFY')
perms.grant_permission('admin', 'TAGS_ADMIN')
self.anonymous = PermissionCache(self.env)
self.reader = PermissionCache(self.env, 'reader')
self.writer = PermissionCache(self.env, 'writer')
self.admin = PermissionCache(self.env, 'admin')
self.href = Href('/trac')
self.abs_href = Href('http://example.org/trac')
示例2: remove_permissions
# 需要导入模块: from trac.perm import PermissionSystem [as 别名]
# 或者: from trac.perm.PermissionSystem import revoke_permission [as 别名]
def remove_permissions(self, permissions):
perm = PermissionSystem(self.env)
for agent, p in permissions.items():
if '*' in p:
p = [ i for i, j in perm.get_user_permissions(agent).items() if j]
for permission in p:
try:
perm.revoke_permission(agent, permission)
except:
continue
示例3: TagModelTestCase
# 需要导入模块: from trac.perm import PermissionSystem [as 别名]
# 或者: from trac.perm.PermissionSystem import revoke_permission [as 别名]
class TagModelTestCase(unittest.TestCase):
def setUp(self):
self.env = EnvironmentStub(default_data=True,
enable=['trac.*', 'tractags.*'])
self.env.path = tempfile.mkdtemp()
self.perms = PermissionSystem(self.env)
self.req = Mock(authname='editor')
self.check_perm = WikiTagProvider(self.env).check_permission
setup = TagSetup(self.env)
# Current tractags schema is setup with enabled component anyway.
# Revert these changes for getting default permissions inserted.
self._revert_tractags_schema_init()
setup.upgrade_environment()
# Populate table with initial test data.
self.env.db_transaction("""
INSERT INTO tags (tagspace, name, tag)
VALUES ('wiki', 'WikiStart', 'tag1')
""")
self.realm = 'wiki'
def tearDown(self):
self.env.shutdown()
shutil.rmtree(self.env.path)
# Helpers
def _revert_tractags_schema_init(self):
with self.env.db_transaction as db:
db("DROP TABLE IF EXISTS tags")
db("DROP TABLE IF EXISTS tags_change")
db("DELETE FROM system WHERE name='tags_version'")
db("DELETE FROM permission WHERE action %s" % db.like(),
('TAGS_%',))
def _tags(self):
tags = {}
for name, tag in self.env.db_query("""
SELECT name,tag FROM tags
"""):
if name in tags:
tags[name].add(tag)
else:
tags[name] = set([tag])
return tags
# Tests
def test_get_tags(self):
resource = Resource(self.realm, 'WikiStart')
self.assertEquals([tag for tag in resource_tags(self.env, resource)],
['tag1'])
def test_get_tagged_resource_no_perm(self):
self.perms.revoke_permission('anonymous', 'WIKI_VIEW')
perm = PermissionCache(self.env)
tags = set(['tag1'])
# Don't yield resource without permission - 'WIKI_VIEW' here.
self.assertEqual([(res, tags) for res, tags
in tagged_resources(self.env, self.check_perm, perm,
self.realm, tags)], [])
def test_get_tagged_resource(self):
perm = PermissionCache(self.env)
resource = Resource(self.realm, 'WikiStart')
tags = set(['tag1'])
self.assertEqual([(res, tags) for res, tags
in tagged_resources(self.env, self.check_perm, perm,
self.realm, tags)],
[(resource, tags)])
def test_reparent(self):
resource = Resource(self.realm, 'TaggedPage')
old_name = 'WikiStart'
tag_resource(self.env, resource, 'WikiStart', self.req.authname)
self.assertEquals(dict(TaggedPage=set(['tag1'])), self._tags())
def test_tag_changes(self):
# Add previously untagged resource.
resource = Resource(self.realm, 'TaggedPage')
tags = set(['tag1'])
tag_resource(self.env, resource, author=self.req.authname, tags=tags)
self.assertEquals(dict(TaggedPage=tags, WikiStart=tags), self._tags())
# Add new tag to already tagged resource.
resource = Resource(self.realm, 'WikiStart')
tags = set(['tag1', 'tag2'])
tag_resource(self.env, resource, author=self.req.authname, tags=tags)
self.assertEquals(dict(TaggedPage=set(['tag1']), WikiStart=tags),
self._tags())
# Exchange tags for already tagged resource.
tags = set(['tag1', 'tag3'])
tag_resource(self.env, resource, author=self.req.authname, tags=tags)
self.assertEquals(dict(TaggedPage=set(['tag1']), WikiStart=tags),
self._tags())
# Delete a subset of tags for already tagged resource.
tags = set(['tag3'])
tag_resource(self.env, resource, author=self.req.authname, tags=tags)
self.assertEquals(dict(TaggedPage=set(['tag1']), WikiStart=tags),
#.........这里部分代码省略.........
示例4: runTest
# 需要导入模块: from trac.perm import PermissionSystem [as 别名]
# 或者: from trac.perm.PermissionSystem import revoke_permission [as 别名]
#.........这里部分代码省略.........
# Subject doesn't have any permissions
tc.notfind(checkbox_value('noperms', ''))
tc.formvalue('copyperm', 'cp_subject', 'noperms')
tc.formvalue('copyperm', 'cp_target', 'user1')
tc.submit()
tc.find("The subject noperms does not have any permissions\.")
# Subject belongs to group but doesn't directly have any permissions
grant_permission('group1', 'TICKET_VIEW')
tc.formvalue('addsubj', 'sg_subject', 'noperms')
tc.formvalue('addsubj', 'sg_group', 'group1')
tc.submit()
tc.find("The subject noperms has been added to the group group1\.")
tc.formvalue('copyperm', 'cp_subject', 'noperms')
tc.formvalue('copyperm', 'cp_target', 'user1')
tc.submit()
tc.find("The subject noperms does not have any permissions\.")
# Target uses reserved all upper-case form
tc.formvalue('copyperm', 'cp_subject', 'noperms')
tc.formvalue('copyperm', 'cp_target', 'USER1')
tc.submit()
tc.find("All upper-cased tokens are reserved for permission names\.")
self._tester.go_to_admin("Permissions")
# Subject users reserved all upper-case form
tc.formvalue('copyperm', 'cp_subject', 'USER1')
tc.formvalue('copyperm', 'cp_target', 'noperms')
tc.submit()
tc.find("All upper-cased tokens are reserved for permission names\.")
self._tester.go_to_admin("Permissions")
# Target already possess one of the permissions
anon_perms = perm_sys.store.get_user_permissions('anonymous')
for perm in anon_perms:
tc.notfind(checkbox_value('user2', perm))
grant_permission('user2', anon_perms[0])
tc.formvalue('copyperm', 'cp_subject', 'anonymous')
tc.formvalue('copyperm', 'cp_target', 'user2')
tc.submit()
tc.notfind("The subject <em>user2</em> has been granted the "
"permission %s\." % anon_perms[0])
for perm in anon_perms[1:]:
tc.find("The subject user2 has been granted the permission %s\."
% perm)
tc.find(checkbox_value('user2', perm))
# Subject has a permission that is no longer defined
try:
env.db_transaction("INSERT INTO permission VALUES (%s,%s)",
('anonymous', 'NOTDEFINED_PERMISSION'))
except env.db_exc.IntegrityError:
pass
env.config.touch() # invalidate permission cache
tc.reload()
tc.find(checkbox_value('anonymous', 'NOTDEFINED_PERMISSION'))
perm_sys = PermissionSystem(env)
anon_perms = perm_sys.store.get_user_permissions('anonymous')
for perm in anon_perms:
tc.notfind(checkbox_value('user3', perm))
tc.formvalue('copyperm', 'cp_subject', 'anonymous')
tc.formvalue('copyperm', 'cp_target', 'user3')
tc.submit()
for perm in anon_perms:
msg = grant_msg % ('user3', perm)
if perm == 'NOTDEFINED_PERMISSION':
tc.notfind(msg)
tc.notfind(checkbox_value('user3', perm))
else:
tc.find(msg)
tc.find(checkbox_value('user3', perm))
perm_sys.revoke_permission('anonymous', 'NOTDEFINED_PERMISSION')
# Actor doesn't posses permission
grant_permission('anonymous', 'PERMISSION_GRANT')
grant_permission('user3', 'TRAC_ADMIN')
self._tester.logout()
self._tester.go_to_admin("Permissions")
try:
tc.formvalue('copyperm', 'cp_subject', 'user3')
tc.formvalue('copyperm', 'cp_target', 'user4')
tc.submit()
perm_sys = PermissionSystem(env)
for perm in [perm[1] for perm in perm_sys.get_all_permissions()
if perm[0] == 'user3'
and perm[1] != 'TRAC_ADMIN']:
tc.find(grant_msg % ('user4', perm))
tc.notfind("The permission TRAC_ADMIN was not granted to user4 "
"because users cannot grant permissions they don't "
"possess.")
finally:
self._testenv.revoke_perm('anonymous', 'PERMISSION_GRANT')
self._tester.login('admin')
示例5: render_admin_panel
# 需要导入模块: from trac.perm import PermissionSystem [as 别名]
# 或者: from trac.perm.PermissionSystem import revoke_permission [as 别名]
def render_admin_panel(self, req, cat, page, path_info):
perm = PermissionSystem(self.env)
all_permissions = perm.get_all_permissions()
all_actions = perm.get_actions()
if req.method == 'POST':
subject = req.args.get('subject', '').strip()
action = req.args.get('action')
group = req.args.get('group', '').strip()
if subject and subject.isupper() or \
group and group.isupper():
raise TracError(_('All upper-cased tokens are reserved for '
'permission names'))
# Grant permission to subject
if req.args.get('add') and subject and action:
req.perm.require('PERMISSION_GRANT')
if action not in all_actions:
raise TracError(_('Unknown action'))
req.perm.require(action)
if (subject, action) not in all_permissions:
perm.grant_permission(subject, action)
add_notice(req, _('The subject %(subject)s has been '
'granted the permission %(action)s.',
subject=subject, action=action))
req.redirect(req.href.admin(cat, page))
else:
add_warning(req, _('The permission %(action)s was already '
'granted to %(subject)s.',
action=action, subject=subject))
# Add subject to group
elif req.args.get('add') and subject and group:
req.perm.require('PERMISSION_GRANT')
for action in perm.get_user_permissions(group):
if not action in all_actions: # plugin disabled?
self.env.log.warn("Adding %s to group %s: " \
"Permission %s unavailable, skipping perm check." \
% (subject, group, action))
else:
req.perm.require(action)
if (subject, group) not in all_permissions:
perm.grant_permission(subject, group)
add_notice(req, _('The subject %(subject)s has been added '
'to the group %(group)s.',
subject=subject, group=group))
req.redirect(req.href.admin(cat, page))
else:
add_warning(req, _('The subject %(subject)s was already '
'added to the group %(group)s.',
subject=subject, group=group))
# Remove permissions action
elif req.args.get('remove') and req.args.get('sel'):
req.perm.require('PERMISSION_REVOKE')
sel = req.args.get('sel')
sel = isinstance(sel, list) and sel or [sel]
for key in sel:
subject, action = key.split(':', 1)
if (subject, action) in perm.get_all_permissions():
perm.revoke_permission(subject, action)
add_notice(req, _('The selected permissions have been '
'revoked.'))
req.redirect(req.href.admin(cat, page))
return 'admin_perms.html', {
'actions': all_actions,
'perms': all_permissions
}
示例6: render_admin_panel
# 需要导入模块: from trac.perm import PermissionSystem [as 别名]
# 或者: from trac.perm.PermissionSystem import revoke_permission [as 别名]
#.........这里部分代码省略.........
# Grant permission to subject
if req.args.get('add') and subject and action:
req.perm('admin', 'general/perm').require('PERMISSION_GRANT')
if action not in all_actions:
raise TracError(_("Unknown action"))
req.perm.require(action)
if (subject, action) not in all_permissions:
perm.grant_permission(subject, action)
add_notice(req, _("The subject %(subject)s has been "
"granted the permission %(action)s.",
subject=subject, action=action))
req.redirect(req.href.admin(cat, page))
else:
add_warning(req, _("The permission %(action)s was already "
"granted to %(subject)s.",
action=action, subject=subject))
# Add subject to group
elif req.args.get('add') and subject and group:
req.perm('admin', 'general/perm').require('PERMISSION_GRANT')
for action in perm.get_user_permissions(group):
if not action in all_actions: # plugin disabled?
self.env.log.warn("Adding %s to group %s: "
"Permission %s unavailable, skipping perm check.",
subject, group, action)
else:
req.perm.require(action,
message=_("The subject %(subject)s was not added "
"to the group %(group)s because the "
"group has %(perm)s permission and "
"users cannot grant permissions they "
"don't possess.", subject=subject,
group=group, perm=action))
if (subject, group) not in all_permissions:
perm.grant_permission(subject, group)
add_notice(req, _("The subject %(subject)s has been added "
"to the group %(group)s.",
subject=subject, group=group))
req.redirect(req.href.admin(cat, page))
else:
add_warning(req, _("The subject %(subject)s was already "
"added to the group %(group)s.",
subject=subject, group=group))
# Copy permissions to subject
elif req.args.get('copy') and subject and target:
req.perm.require('PERMISSION_GRANT')
subject_permissions = [i[1] for i in all_permissions
if i[0] == subject and
i[1].isupper()]
if not subject_permissions:
add_warning(req,_("The subject %(subject)s does not "
"have any permissions.",
subject=subject))
for action in subject_permissions:
if (target, action) in all_permissions:
continue
if not action in all_actions: # plugin disabled?
self.env.log.warn("Skipped granting %s to %s: "
"permission unavailable.",
action, target)
else:
if action not in req.perm:
add_warning(req,
_("The permission %(action)s was "
"not granted to %(subject)s "
"because users cannot grant "
"permissions they don't possess.",
action=action, subject=subject))
continue
perm.grant_permission(target, action)
add_notice(req, _("The subject %(subject)s has "
"been granted the permission "
"%(action)s.",
subject=target, action=action))
req.redirect(req.href.admin(cat, page))
# Remove permissions action
elif req.args.get('remove') and req.args.get('sel'):
req.perm('admin', 'general/perm').require('PERMISSION_REVOKE')
sel = req.args.get('sel')
sel = sel if isinstance(sel, list) else [sel]
for key in sel:
subject, action = key.split(':', 1)
subject = unicode_from_base64(subject)
action = unicode_from_base64(action)
if (subject, action) in perm.get_all_permissions():
perm.revoke_permission(subject, action)
add_notice(req, _("The selected permissions have been "
"revoked."))
req.redirect(req.href.admin(cat, page))
return 'admin_perms.html', {
'actions': all_actions,
'perms': perm.get_users_dict(),
'groups': perm.get_groups_dict(),
'unicode_to_base64': unicode_to_base64
}