本文整理汇总了Python中trac.perm.PermissionSystem.get_all_permissions方法的典型用法代码示例。如果您正苦于以下问题:Python PermissionSystem.get_all_permissions方法的具体用法?Python PermissionSystem.get_all_permissions怎么用?Python PermissionSystem.get_all_permissions使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类trac.perm.PermissionSystem
的用法示例。
在下文中一共展示了PermissionSystem.get_all_permissions方法的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: _do_notice
# 需要导入模块: from trac.perm import PermissionSystem [as 别名]
# 或者: from trac.perm.PermissionSystem import get_all_permissions [as 别名]
def _do_notice(self, req):
perm = PermissionSystem(self.env)
perms = perm.get_all_permissions()
self._get_notice_options()
(userinfos, groupinfos) = self._get_infos(perms)
if req.method == 'POST':
if req.args.get('fill'):
self._set_notice_options(req)
if req.args.get('use_ldap'):
self._fill_from_ldap(userinfos,groupinfos)
if req.args.get('use_file'):
self._fill_from_file(req,userinfos,groupinfos)
if req.args.get('change'):
self._fill_from_fields(req,userinfos,groupinfos)
if req.args.get('rmuser'):
self._rm_user(req,userinfos,groupinfos)
(userinfos, groupinfos) = self._get_infos(perms)
if req.args.get('rminfo'):
self._rm_info(req,userinfos,groupinfos)
if req.args.get('rmall'):
self._rm_all(req,userinfos,groupinfos)
(userinfos, groupinfos) = self._get_infos(perms)
if (len(userinfos) > 0) or (len(groupinfos)>0):
self.error_message = "As long as permissions are defined for users/group, " + \
"they cannot be delete from this list."
if req.args.get('extract'):
self._extract_groups(req,userinfos,groupinfos)
req.hdf['admin.userinfos'] = userinfos
req.hdf['admin.groupinfos'] = groupinfos
req.hdf['admin.options'] = self.options
if self.error_message:
req.hdf['admin.error_message'] = self.error_message
return 'admin_notice.cs', None
示例2: _users_query
# 需要导入模块: from trac.perm import PermissionSystem [as 别名]
# 或者: from trac.perm.PermissionSystem import get_all_permissions [as 别名]
def _users_query(self, q, limit=10):
from simplifiedpermissionsadminplugin.simplifiedpermissions import SimplifiedPermissions
if SimplifiedPermissions and self.env.is_enabled(SimplifiedPermissions):
sp = SimplifiedPermissions(self.env)
# Keep track of users that have already been found to prevent
# yielding duplicates of users belonging to several groups
yielded_sids = set()
for group, data in sp.group_memberships().items():
for member in data['members']:
if q in member.sid and member.sid not in yielded_sids:
# if the 'never logged in' text changes, then update
# plugins/open/autocompleteplugin/autocompleteplugin/htdocs/js/jquery.tracautocomplete.js
yield {'sid': member.sid,
'name': member.get('name', member.sid),
'email': member.get('email','')}
yielded_sids.add(member.sid)
else:
perm = PermissionSystem(self.env)
users = [sid
for sid, permission in perm.get_all_permissions()
if sid not in set("anonymous", "authenticated", "admin")]
for sid in sorted(set(users)):
if q in sid:
session = DetachedSession(self.env, sid)
yield {'sid': sid,
'name': session.get('name',''),
'email': session.get('email','Never logged in')}
示例3: _get_groups
# 需要导入模块: from trac.perm import PermissionSystem [as 别名]
# 或者: from trac.perm.PermissionSystem import get_all_permissions [as 别名]
def _get_groups(self, user):
# Get initial subjects
groups = set([user])
for provider in self.group_providers:
for group in provider.get_permission_groups(user):
groups.add(group)
# Essentially the default trac PermissionStore ignores user provided
# groups so we have to look them up manually:
# changed this to only do this for the default permission
# store this has been reported as broken/very slow for the
# LDAP permission store
ps = PermissionSystem(self.env)
if isinstance(ps.store, DefaultPermissionStore):
perms = ps.get_all_permissions()
repeat = True
while repeat:
repeat = False
for subject, action in perms:
if subject in groups and not action.isupper() and action not in groups:
groups.add(action)
repeat = True
return groups
示例4: get_permission_actions
# 需要导入模块: from trac.perm import PermissionSystem [as 别名]
# 或者: from trac.perm.PermissionSystem import get_all_permissions [as 别名]
def get_permission_actions(self):
"""
This method returnes a list with all the
permission that this controller requires.
@return: list
"""
permission_system = PermissionSystem(self.env)
for subject, action in permission_system.get_all_permissions():
if action == 'PROJECT_ADMIN' :
return []
return ['PROJECT_ADMIN']
示例5: _get_all_users
# 需要导入模块: from trac.perm import PermissionSystem [as 别名]
# 或者: from trac.perm.PermissionSystem import get_all_permissions [as 别名]
def _get_all_users(self):
"""
Fetches all users/groups from PermissionSystem
"""
perm = PermissionSystem(self.env)
users = ["*"]
data = perm.get_all_permissions()
if not data:
return [] # we abort here
for (subject, action) in data:
if subject not in users and subject not in ["anonymous", "authenticated"]:
users.append(subject)
return users
示例6: _do_notice
# 需要导入模块: from trac.perm import PermissionSystem [as 别名]
# 或者: from trac.perm.PermissionSystem import get_all_permissions [as 别名]
def _do_notice(self, req):
perm = PermissionSystem(self.env)
perms = perm.get_all_permissions()
self._get_notice_options()
(userinfos, groupinfos) = self._get_infos(perms)
if req.method == 'POST':
if req.args.get('fill'):
self._set_notice_options(req)
if req.args.get('use_ldap'):
self._fill_from_ldap(userinfos,groupinfos)
if req.args.get('use_file'):
self._fill_from_file(req,userinfos,groupinfos)
if req.args.get('change'):
self._fill_from_fields(req,userinfos,groupinfos)
if req.args.get('rmuser'):
self._rm_user(req,userinfos,groupinfos)
(userinfos, groupinfos) = self._get_infos(perms)
if req.args.get('rminfo'):
self._rm_info(req,userinfos,groupinfos)
if req.args.get('rmall'):
self._rm_all(req,userinfos,groupinfos)
(userinfos, groupinfos) = self._get_infos(perms)
if (len(userinfos) > 0) or (len(groupinfos)>0):
self.error_message = "As long as permissions are defined for users/group, " + \
"they cannot be delete from this list."
if req.args.get('extract'):
self._extract_groups(req,userinfos,groupinfos)
# need a new index for clearsilver to understand names including '.'
newuserinfos = {}
cnt=0
for ui in userinfos:
auser = userinfos.get(ui)
newuserinfos[cnt] = auser
cnt+=1
req.hdf['admin.userinfos'] = newuserinfos
req.hdf['admin.groupinfos'] = groupinfos
req.hdf['admin.ldap_import'] = ldap_import
req.hdf['admin.options'] = self.options
if self.error_message:
req.hdf['admin.error_message'] = self.error_message
return 'admin_notice.cs', None
示例7: set_password
# 需要导入模块: from trac.perm import PermissionSystem [as 别名]
# 或者: from trac.perm.PermissionSystem import get_all_permissions [as 别名]
def set_password(self, user, password):
perm = PermissionSystem(self.env)
all_perms = [ p[0] for p in perm.get_all_permissions() ]
if user in all_perms:
raise TracError('%s is a reserved name that can not be registered.' % user)
needles = [ ':', '[', ']' ]
for needle in needles:
if needle in user:
raise TracError('Character "%s" may not be used in user names.' % needle)
if len(user) < 3:
raise TracError('User name must be at least 3 characters long.')
if not re.match(r'^\w+$', user):
raise TracError('User name must consist only of alpha-numeric characters.')
if user.isupper():
raise TracError('User name must not consist of upper-case characters only.')
if WikiPage(self.env, user).exists:
raise TracError('wiki page "%s" already exists' % user)
return HtPasswdStore.set_password(self, user, password)
示例8: runTest
# 需要导入模块: from trac.perm import PermissionSystem [as 别名]
# 或者: from trac.perm.PermissionSystem import get_all_permissions [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')
示例9: render_admin_panel
# 需要导入模块: from trac.perm import PermissionSystem [as 别名]
# 或者: from trac.perm.PermissionSystem import get_all_permissions [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
}
示例10: render_admin_panel
# 需要导入模块: from trac.perm import PermissionSystem [as 别名]
# 或者: from trac.perm.PermissionSystem import get_all_permissions [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()
target = req.args.get('target', '').strip()
action = req.args.get('action')
group = req.args.get('group', '').strip()
if subject and subject.isupper() or \
group and group.isupper() or \
target and target.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('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')
#.........这里部分代码省略.........
示例11: SessionHelper
# 需要导入模块: from trac.perm import PermissionSystem [as 别名]
# 或者: from trac.perm.PermissionSystem import get_all_permissions [as 别名]
class SessionHelper(Component):
"""Helper for searching/manipulating the user database.
Note that in trac, the user account/profile database is
implemented as part of the session state storage. User accounts
are refered to as "authenticated sessions". The “username” is
referred to as the *session id* or ``sesssion.sid``. It is also
called the *authname* (e.g. ``req.authname``.)
"""
abstract = True
def __init__(self):
self.permissions = PermissionSystem(self.env)
def find_session_by_attr(self, attr_name, attr_value):
""" Find an authenticated session which contain a specific attribute.
"""
rows = db_query(self.env,
"SELECT session.sid"
" FROM session"
" INNER JOIN session_attribute AS attr"
" USING(sid, authenticated)"
" WHERE session.authenticated=%s"
" AND attr.name=%s AND attr.value=%s"
" ORDER BY session.last_visit DESC",
(1, attr_name, attr_value))
return [row[0] for row in rows]
def create_session(self, authname_base, attributes):
"""Create a new authenticated session.
(In trac, authenticated sessions are, essentially “user accounts”,
so this creates a new account or “login” on the trac.)
If possible, the session is created with an ``sid`` of
``authname_base``. If a session already exists with that
``sid``, then a suffix is added to make the ``sid`` unique.
The attributes of the new session are initialized from the
``attributes`` argument, if any.
The ``sid`` of the new session is returned.
"""
if not attributes:
raise ValueError("Attributes required for new session")
for suffix in self.uniquifier_suffixes():
authname = authname_base + suffix
if self.permission_exists_for(authname):
continue
ds = DetachedSession(self.env, authname)
# At least in 0.12.2, this means no session exists.
is_new = ds.last_visit == 0 and len(ds) == 0
if is_new:
break
for key, value in attributes.items():
ds[key] = value or ''
ds.save()
return authname
def uniquifier_suffixes(self):
""" Suffixes used to generate unique authnames.
"""
return chain([""], (" (%d)" % n for n in count(2)))
def permission_exists_for(self, authname):
return any(authname == user
for user, perm in self.permissions.get_all_permissions())