本文整理汇总了Python中trac.perm.PermissionSystem.get_users_with_permission方法的典型用法代码示例。如果您正苦于以下问题:Python PermissionSystem.get_users_with_permission方法的具体用法?Python PermissionSystem.get_users_with_permission怎么用?Python PermissionSystem.get_users_with_permission使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类trac.perm.PermissionSystem
的用法示例。
在下文中一共展示了PermissionSystem.get_users_with_permission方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: render_ticket_action_control
# 需要导入模块: from trac.perm import PermissionSystem [as 别名]
# 或者: from trac.perm.PermissionSystem import get_users_with_permission [as 别名]
def render_ticket_action_control(self, req, ticket, action):
self.log.debug('render_ticket_action_control: action "%s"' % action)
this_action = self.actions[action]
status = this_action['newstate']
operations = this_action['operations']
current_owner = ticket._old.get('owner', ticket['owner'] or '(none)')
if not (Chrome(self.env).show_email_addresses
or 'EMAIL_VIEW' in req.perm(ticket.resource)):
format_user = obfuscate_email_address
else:
format_user = lambda address: address
current_owner = format_user(current_owner)
control = [] # default to nothing
hints = []
if 'reset_workflow' in operations:
control.append(tag("from invalid state "))
hints.append(_("Current state no longer exists"))
if 'del_owner' in operations:
hints.append(_("The ticket will be disowned"))
if 'set_owner' in operations:
id = 'action_%s_reassign_owner' % action
selected_owner = req.args.get(id, req.authname)
if this_action.has_key('set_owner'):
owners = [x.strip() for x in
this_action['set_owner'].split(',')]
elif self.config.getbool('ticket', 'restrict_owner'):
perm = PermissionSystem(self.env)
owners = perm.get_users_with_permission('TICKET_MODIFY')
owners.sort()
else:
owners = None
if owners == None:
owner = req.args.get(id, req.authname)
control.append(tag_('to %(owner)s',
owner=tag.input(type='text', id=id,
name=id, value=owner)))
hints.append(_("The owner will be changed from "
"%(current_owner)s",
current_owner=current_owner))
elif len(owners) == 1:
owner = tag.input(type='hidden', id=id, name=id,
value=owners[0])
formatted_owner = format_user(owners[0])
control.append(tag_('to %(owner)s ',
owner=tag(formatted_owner, owner)))
if ticket['owner'] != owners[0]:
hints.append(_("The owner will be changed from "
"%(current_owner)s to %(selected_owner)s",
current_owner=current_owner,
selected_owner=formatted_owner))
else:
control.append(tag_('to %(owner)s', owner=tag.select(
[tag.option(x, value=x,
selected=(x == selected_owner or None))
for x in owners],
id=id, name=id)))
hints.append(_("The owner will be changed from "
"%(current_owner)s",
current_owner=current_owner))
if 'set_owner_to_self' in operations and \
ticket._old.get('owner', ticket['owner']) != req.authname:
hints.append(_("The owner will be changed from %(current_owner)s "
"to %(authname)s", current_owner=current_owner,
authname=req.authname))
if 'set_resolution' in operations:
if this_action.has_key('set_resolution'):
resolutions = [x.strip() for x in
this_action['set_resolution'].split(',')]
else:
resolutions = [val.name for val in Resolution.select(self.env)]
if not resolutions:
raise TracError(_("Your workflow attempts to set a resolution "
"but none is defined (configuration issue, "
"please contact your Trac admin)."))
id = 'action_%s_resolve_resolution' % action
if len(resolutions) == 1:
resolution = tag.input(type='hidden', id=id, name=id,
value=resolutions[0])
control.append(tag_('as %(resolution)s',
resolution=tag(resolutions[0],
resolution)))
hints.append(_("The resolution will be set to %(name)s",
name=resolutions[0]))
else:
selected_option = req.args.get(id,
TicketSystem(self.env).default_resolution)
control.append(tag_('as %(resolution)s',
resolution=tag.select(
[tag.option(x, value=x,
selected=(x == selected_option or None))
for x in resolutions],
id=id, name=id)))
hints.append(_("The resolution will be set"))
if 'del_resolution' in operations:
hints.append(_("The resolution will be deleted"))
#.........这里部分代码省略.........
示例2: render_ticket_action_control
# 需要导入模块: from trac.perm import PermissionSystem [as 别名]
# 或者: from trac.perm.PermissionSystem import get_users_with_permission [as 别名]
def render_ticket_action_control(self, req, ticket, action):
self.log.debug('render_ticket_action_control: action "%s"', action)
this_action = self.actions[action]
status = this_action['newstate']
operations = this_action['operations']
current_owner = ticket._old.get('owner', ticket['owner'])
author = get_reporter_id(req, 'author')
author_info = partial(Chrome(self.env).authorinfo, req,
resource=ticket.resource)
format_author = partial(Chrome(self.env).format_author, req,
resource=ticket.resource)
formatted_current_owner = author_info(current_owner)
exists = ticket._old.get('status', ticket['status']) is not None
control = [] # default to nothing
hints = []
if 'reset_workflow' in operations:
control.append(_("from invalid state"))
hints.append(_("Current state no longer exists"))
if 'del_owner' in operations:
hints.append(_("The ticket will be disowned"))
if 'set_owner' in operations or 'may_set_owner' in operations:
if 'set_owner' in this_action:
owners = self._to_users(this_action['set_owner'], ticket)
elif self.config.getbool('ticket', 'restrict_owner'):
perm = PermissionSystem(self.env)
owners = perm.get_users_with_permission('TICKET_MODIFY')
owners = [user for user in owners
if 'TICKET_MODIFY'
in PermissionCache(self.env, user,
ticket.resource)]
owners = sorted(owners)
else:
owners = None
if 'set_owner' in operations:
default_owner = author
elif 'may_set_owner' in operations:
if not exists:
default_owner = TicketSystem(self.env).default_owner
else:
default_owner = ticket._old.get('owner',
ticket['owner'] or None)
if owners is not None and default_owner not in owners:
owners.insert(0, default_owner)
else:
# Protect against future modification for case that another
# operation is added to the outer conditional
raise AssertionError(operations)
id = 'action_%s_reassign_owner' % action
if not owners:
owner = req.args.get(id, default_owner)
control.append(
tag_("to %(owner)s",
owner=tag.input(type='text', id=id, name=id,
value=owner)))
if not exists or current_owner is None:
hints.append(_("The owner will be the specified user"))
else:
hints.append(tag_("The owner will be changed from "
"%(current_owner)s to the specified "
"user",
current_owner=formatted_current_owner))
elif len(owners) == 1:
owner = tag.input(type='hidden', id=id, name=id,
value=owners[0])
formatted_new_owner = author_info(owners[0])
control.append(tag_("to %(owner)s",
owner=tag(formatted_new_owner, owner)))
if not exists or current_owner is None:
hints.append(tag_("The owner will be %(new_owner)s",
new_owner=formatted_new_owner))
elif ticket['owner'] != owners[0]:
hints.append(tag_("The owner will be changed from "
"%(current_owner)s to %(new_owner)s",
current_owner=formatted_current_owner,
new_owner=formatted_new_owner))
else:
selected_owner = req.args.get(id, default_owner)
control.append(tag_("to %(owner)s", owner=tag.select(
[tag.option(format_author(x),
value=x if x is not None else '',
selected=(x == selected_owner or None))
for x in owners],
id=id, name=id)))
if not exists or current_owner is None:
hints.append(_("The owner will be the selected user"))
else:
hints.append(tag_("The owner will be changed from "
"%(current_owner)s to the selected user",
current_owner=formatted_current_owner))
elif 'set_owner_to_self' in operations and \
ticket._old.get('owner', ticket['owner']) != author:
formatted_author = author_info(author)
if not exists or current_owner is None:
hints.append(tag_("The owner will be %(new_owner)s",
#.........这里部分代码省略.........
示例3: get_operation_control
# 需要导入模块: from trac.perm import PermissionSystem [as 别名]
# 或者: from trac.perm.PermissionSystem import get_users_with_permission [as 别名]
def get_operation_control(self, req, action, operation, res_wf_state, resource):
self.log.debug(">>> WorkflowStandardOperations - get_operation_control: %s" % operation)
id = 'action_%s_operation_%s' % (action, operation)
# A custom field named "owner" is required in the ResourceWorkflowState
# class for this operation to be available
self.env.log.debug(res_wf_state.fields)
if operation == 'set_owner' and self._has_field_named('owner', res_wf_state.fields):
self.log.debug("Creating control for setting owner.")
current_owner = res_wf_state['owner'] or '(none)'
if not (Chrome(self.env).show_email_addresses
or 'EMAIL_VIEW' in req.perm(resource)):
format_user = obfuscate_email_address
else:
format_user = lambda address: address
current_owner = format_user(current_owner)
self.log.debug("Current owner is %s." % current_owner)
selected_owner = req.args.get(id, req.authname)
control = None
hint = ''
owners = None
available_owners = self.config.get(resource.realm, 'available_owners')
if available_owners is not None and not available_owners == '':
owners = [x.strip() for x in
available_owners.split(',')]
elif self.config.getbool(resource.realm, 'restrict_owner'):
target_permission = self.config.get(resource.realm, 'restrict_owner_to_permission')
if target_permission is not None and not target_permission == '':
perm = PermissionSystem(self.env)
owners = perm.get_users_with_permission(target_permission)
owners.sort()
if owners == None:
owner = req.args.get(id, req.authname)
control = tag('Assign to ',
tag.input(type='text', id=id,
name=id, value=owner))
hint = "The owner will be changed from %s" % current_owner
elif len(owners) == 1:
owner = tag.input(type='hidden', id=id, name=id,
value=owners[0])
formatted_owner = format_user(owners[0])
control = tag('Assign to ',
tag(formatted_owner, owner))
if res_wf_state['owner'] != owners[0]:
hint = "The owner will be changed from %s to %s" % (current_owner, formatted_owner)
else:
control = tag('Assign to ', tag.select(
[tag.option(format_user(x), value=x,
selected=(x == selected_owner or None))
for x in owners],
id=id, name=id))
hint = "The owner will be changed from %s" % current_owner
return control, hint
elif operation == 'set_owner_to_self' and self._has_field_named('owner', res_wf_state.fields) and \
res_wf_state['owner'] != req.authname:
current_owner = res_wf_state['owner'] or '(none)'
if not (Chrome(self.env).show_email_addresses
or 'EMAIL_VIEW' in req.perm(resource)):
format_user = obfuscate_email_address
else:
format_user = lambda address: address
current_owner = format_user(current_owner)
control = tag('')
hint = "The owner will be changed from %s to %s" % (current_owner, req.authname)
self.log.debug("<<< WorkflowStandardOperations - get_operation_control - set_owner_to_self")
return control, hint
elif operation == 'std_notify':
pass
self.log.debug("<<< WorkflowStandardOperations - get_operation_control")
return None, ''
示例4: expand_macro
# 需要导入模块: from trac.perm import PermissionSystem [as 别名]
# 或者: from trac.perm.PermissionSystem import get_users_with_permission [as 别名]
def expand_macro(self, formatter, name, content):
env = formatter.env
req = formatter.req
if not content:
args = []
kw = {}
else:
args, kw = parse_args(content)
if name == 'ProjectStats':
if 'wiki' in kw.keys():
prefix = 'prefix' in kw.keys() and kw['prefix'] or None
wiki = WikiSystem(env)
if kw['wiki'] == 'count' or 'count' in args:
return tag(len(list(wiki.get_pages(prefix))))
elif name == 'UserQuery':
msg_no_perm = tag.p(tag_("(required %(perm)s missing)",
perm=tag.strong('USER_VIEW')),
class_='hint')
if 'perm' in kw.keys():
perm_sys = PermissionSystem(self.env)
users = perm_sys.get_users_with_permission(kw['perm'].upper())
else:
acct_mgr = AccountManager(env)
users = list(set(acct_mgr.get_users()))
if 'locked' in kw.keys() or 'locked' in args:
guard = AccountGuard(env)
locked = []
for user in users:
if guard.user_locked(user):
locked.append(user)
if kw.get('locked', 'True').lower() in ('true', 'yes', '1'):
users = locked
else:
users = list(set(users) - set(locked))
elif 'visit' in kw.keys() or 'visit' in args:
if 'USER_VIEW' not in req.perm:
return msg_no_perm
cols = []
data = {'accounts': fetch_user_data(env, req), 'cls': 'wiki'}
for col in ('email', 'name'):
if col in args:
cols.append(col)
data['cols'] = cols
return Chrome(env).render_template(
req, 'user_table.html', data, 'text/html', True)
if kw.get('format') == 'count' or 'count' in args:
return tag(len(users))
if 'USER_VIEW' not in req.perm:
return msg_no_perm
if 'email' in args or 'name' in args:
# Replace username with full name, add email if available.
for username, name, email in self.env.get_known_users():
if username in users:
if 'name' not in args or name is None:
name = username
if 'email' in args and email is not None:
email = ''.join(['<', email, '>'])
name = ' '.join([name, email])
if not username == name:
users.pop(users.index(username))
users.append(name)
if not users and 'nomatch' in kw.keys():
return format_to_oneliner(env, formatter.context,
kw['nomatch'])
users = sorted(users)
if kw.get('format') == 'list':
return tag.ul([tag.li(Chrome(env).format_author(req, user))
for user in users])
else:
# Default output format: comma-separated list.
return tag(', '.join([Chrome(env).format_author(req, user)
for user in users]))
示例5: render_ticket_action_control
# 需要导入模块: from trac.perm import PermissionSystem [as 别名]
# 或者: from trac.perm.PermissionSystem import get_users_with_permission [as 别名]
def render_ticket_action_control(self, req, ticket, action):
from trac.ticket import model
self.log.debug('render_ticket_action_control: action "%s"' % action)
tipo_ticket=ticket._old.get('type', ticket['type'])
self.actions=get_workflow_config_by_type(self.config,tipo_ticket)
if len(self.actions)<1:
self.actions=get_workflow_config_default(self.config)
this_action = self.actions[action]
status = this_action['newstate']
operations = this_action['operations']
current_owner = ticket._old.get('owner', ticket['owner'] or '(none)')
control = [] # default to nothing
hints = []
if 'reset_workflow' in operations:
control.append(tag("from invalid state "))
hints.append(_("Current state no longer exists"))
if 'del_owner' in operations:
hints.append(_("The ticket will be disowned"))
if 'set_owner' in operations:
id = 'action_%s_reassign_owner' % action
selected_owner = req.args.get(id, req.authname)
if this_action.has_key('set_owner'):
owners = [x.strip() for x in
this_action['set_owner'].split(',')]
elif self.config.getbool('ticket', 'restrict_owner'):
perm = PermissionSystem(self.env)
owners = perm.get_users_with_permission('TICKET_MODIFY')
owners.sort()
else:
owners = None
if owners == None:
owner = req.args.get(id, req.authname)
control.append(tag(['to ', tag.input(type='text', id=id,
name=id, value=owner)]))
hints.append(_("The owner will change from %(current_owner)s",
current_owner=current_owner))
elif len(owners) == 1:
control.append(tag('to %s ' % owners[0]))
if ticket['owner'] != owners[0]:
hints.append(_("The owner will change from "
"%(current_owner)s to %(selected_owner)s",
current_owner=current_owner,
selected_owner=owners[0]))
else:
control.append(tag([_("to "), tag.select(
[tag.option(x, selected=(x == selected_owner or None))
for x in owners],
id=id, name=id)]))
hints.append(_("The owner will change from %(current_owner)s",
current_owner=current_owner))
if 'set_owner_to_self' in operations and \
ticket._old.get('owner', ticket['owner']) != req.authname:
hints.append(_("The owner will change from %(current_owner)s "
"to %(authname)s", current_owner=current_owner,
authname=req.authname))
if 'set_resolution' in operations:
if this_action.has_key('set_resolution'):
resolutions = [x.strip() for x in
this_action['set_resolution'].split(',')]
else:
resolutions = [val.name for val in
model.Resolution.select(self.env)]
if not resolutions:
raise TracError(_("Your workflow attempts to set a resolution "
"but none is defined (configuration issue, "
"please contact your Trac admin)."))
if len(resolutions) == 1:
control.append(tag('as %s' % resolutions[0]))
hints.append(_("The resolution will be set to %s") %
resolutions[0])
else:
id = 'action_%s_resolve_resolution' % action
selected_option = req.args.get(id,
self.config.get('ticket', 'default_resolution'))
control.append(tag(['as ', tag.select(
[tag.option(x, selected=(x == selected_option or None))
for x in resolutions],
id=id, name=id)]))
hints.append(_("The resolution will be set"))
if 'leave_status' in operations:
control.append('as %s ' % ticket._old.get('status',
ticket['status']))
else:
if status != '*':
hints.append(_("Next status will be '%s'") % status)
return (this_action['name'], tag(*control), '. '.join(hints))
示例6: get_people
# 需要导入模块: from trac.perm import PermissionSystem [as 别名]
# 或者: from trac.perm.PermissionSystem import get_users_with_permission [as 别名]
def get_people(self):
perm = PermissionSystem(self.env)
people = set(perm.get_users_with_permission('TEAMCALENDAR_UPDATE_OWN'))
return sorted(people)