本文整理汇总了Python中website.util.permissions.reduce_permissions函数的典型用法代码示例。如果您正苦于以下问题:Python reduce_permissions函数的具体用法?Python reduce_permissions怎么用?Python reduce_permissions使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了reduce_permissions函数的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: test_reduce_permissions
def test_reduce_permissions():
result = permissions.reduce_permissions(['read', 'write', 'admin'])
assert_equal(result, 'admin')
result2 = permissions.reduce_permissions(['read', 'write'])
assert_equal(result2, 'write')
result3 = permissions.reduce_permissions(['read'])
assert_equal(result3, 'read')
示例2: _render_node
def _render_node(node, auth=None):
"""
:param node:
:return:
"""
perm = None
# NOTE: auth.user may be None if viewing public project while not
# logged in
if auth and auth.user and node.get_permissions(auth.user):
perm_list = node.get_permissions(auth.user)
perm = permissions.reduce_permissions(perm_list)
return {
"title": node.title,
"id": node._primary_key,
"url": node.url,
"api_url": node.api_url,
"primary": node.primary,
"date_modified": utils.iso8601format(node.date_modified),
"category": node.category,
"permissions": perm, # A string, e.g. 'admin', or None,
"archiving": node.archiving,
}
示例3: update
def update(self, instance, validated_data):
index = None
if 'index' in validated_data:
index = validated_data.pop('index')
contributor = instance
auth = Auth(self.context['request'].user)
node = self.context['view'].get_node()
if 'bibliographic' in validated_data:
bibliographic = validated_data.get('bibliographic')
else:
bibliographic = node.get_visible(contributor)
permission = validated_data.get('permission') or contributor.permission
try:
if index is not None:
node.move_contributor(contributor, auth, index, save=True)
node.update_contributor(contributor, permission, bibliographic, auth, save=True)
except NodeStateError as e:
raise exceptions.ValidationError(detail=e.message)
except ValueError as e:
raise exceptions.ValidationError(detail=e.message)
contributor.permission = osf_permissions.reduce_permissions(node.get_permissions(contributor))
contributor.bibliographic = node.get_visible(contributor)
contributor.node_id = node._id
if index is not None:
contributor.index = index
return contributor
示例4: serialize_simple_user
def serialize_simple_user(user_info):
user = User.load(user_info[0])
return {
'id': user._id,
'name': user.fullname,
'permission': reduce_permissions(user_info[1]) if user_info[1] else None,
}
示例5: serialize_user
def serialize_user(user, node=None, full=False):
"""Return a dictionary representation of a registered user.
:param User user: A User object
:param bool full: Include complete user properties
"""
fullname = user.display_full_name(node=node)
rv = {
'id': str(user._primary_key),
'registered': user.is_registered,
'surname': user.family_name,
'fullname': fullname,
'shortname': fullname if len(fullname) < 50 else fullname[:23] + "..." + fullname[-23:],
'gravatar_url': gravatar(
user, use_ssl=True,
size=settings.GRAVATAR_SIZE_ADD_CONTRIBUTOR
),
'active': user.is_active(),
}
if node is not None:
rv.update({
'visible': user._id in node.visible_contributor_ids,
'permission': reduce_permissions(node.get_permissions(user)),
})
if user.is_registered:
rv.update({
'url': user.url,
'absolute_url': user.absolute_url,
'display_absolute_url': user.display_absolute_url,
'date_registered': user.date_registered.strftime("%Y-%m-%d"),
})
if full:
if user.is_merged:
merger = user.merged_by
merged_by = {
'id': str(merger._primary_key),
'url': merger.url,
'absolute_url': merger.absolute_url
}
else:
merged_by = None
rv.update({
'number_projects': len(get_projects(user)),
'number_public_projects': len(get_public_projects(user)),
'activity_points': user.get_activity_points(),
'gravatar_url': gravatar(
user, use_ssl=True,
size=settings.GRAVATAR_SIZE_PROFILE
),
'is_merged': user.is_merged,
'merged_by': merged_by,
})
return rv
示例6: update
def update(self, instance, validated_data):
contributor = instance
auth = Auth(self.context['request'].user)
node = self.context['view'].get_node()
visible = validated_data.get('bibliographic')
permission = validated_data.get('permission')
try:
node.update_contributor(contributor, permission, visible, auth, save=True)
except NodeStateError as e:
raise exceptions.ValidationError(e)
contributor.permission = osf_permissions.reduce_permissions(node.get_permissions(contributor))
contributor.bibliographic = node.get_visible(contributor)
contributor.node_id = node._id
return contributor
示例7: create
def create(self, validated_data):
auth = Auth(self.context['request'].user)
node = self.context['view'].get_node()
contributor = get_object_or_error(User, validated_data['_id'], display_name='user')
# Node object checks for contributor existence but can still change permissions anyway
if contributor in node.contributors:
raise exceptions.ValidationError('{} is already a contributor'.format(contributor.fullname))
bibliographic = validated_data['bibliographic']
permissions = osf_permissions.expand_permissions(validated_data.get('permission')) or osf_permissions.DEFAULT_CONTRIBUTOR_PERMISSIONS
node.add_contributor(contributor=contributor, auth=auth, visible=bibliographic, permissions=permissions, save=True)
contributor.permission = osf_permissions.reduce_permissions(node.get_permissions(contributor))
contributor.bibliographic = node.get_visible(contributor)
contributor.node_id = node._id
return contributor
示例8: test_reduce_permissions_with_unknown_permission_raises_error
def test_reduce_permissions_with_unknown_permission_raises_error():
with assert_raises(ValueError):
permissions.reduce_permissions(['unknownpermission'])
示例9: test_reduce_permissions_with_empty_list_raises_error
def test_reduce_permissions_with_empty_list_raises_error():
with assert_raises(ValueError):
permissions.reduce_permissions([])
示例10: serialize_user
def serialize_user(user, node=None, admin=False, full=False, is_profile=False):
"""
Return a dictionary representation of a registered user.
:param User user: A User object
:param bool full: Include complete user properties
"""
fullname = user.display_full_name(node=node)
ret = {
'id': str(user._primary_key),
'registered': user.is_registered,
'surname': user.family_name,
'fullname': fullname,
'shortname': fullname if len(fullname) < 50 else fullname[:23] + "..." + fullname[-23:],
'gravatar_url': gravatar(
user, use_ssl=True,
size=settings.PROFILE_IMAGE_MEDIUM
),
'active': user.is_active,
}
if node is not None:
if admin:
flags = {
'visible': False,
'permission': 'read',
}
else:
flags = {
'visible': user._id in node.visible_contributor_ids,
'permission': reduce_permissions(node.get_permissions(user)),
}
ret.update(flags)
if user.is_registered:
ret.update({
'url': user.url,
'absolute_url': user.absolute_url,
'display_absolute_url': user.display_absolute_url,
'date_registered': user.date_registered.strftime("%Y-%m-%d"),
})
if full:
# Add emails
if is_profile:
ret['emails'] = [
{
'address': each,
'primary': each.strip().lower() == user.username.strip().lower(),
'confirmed': True,
} for each in user.emails
] + [
{
'address': each,
'primary': each.strip().lower() == user.username.strip().lower(),
'confirmed': False
}
for each in user.unconfirmed_emails
]
if user.is_merged:
merger = user.merged_by
merged_by = {
'id': str(merger._primary_key),
'url': merger.url,
'absolute_url': merger.absolute_url
}
else:
merged_by = None
ret.update({
'number_projects': get_projects(user).count(),
'number_public_projects': get_public_projects(user).count(),
'activity_points': user.get_activity_points(),
'gravatar_url': gravatar(
user, use_ssl=True,
size=settings.PROFILE_IMAGE_LARGE
),
'is_merged': user.is_merged,
'merged_by': merged_by,
})
return ret
示例11: serialize_simple_user_and_node_permissions
def serialize_simple_user_and_node_permissions(node, user):
return {
'id': user._id,
'name': user.fullname,
'permission': reduce_permissions(node.get_permissions(user))
}
示例12: serialize_user
def serialize_user(user, node=None, admin=False, full=False, is_profile=False, include_node_counts=False):
"""
Return a dictionary representation of a registered user.
:param User user: A User object
:param bool full: Include complete user properties
"""
from website.project.utils import PROJECT_QUERY
contrib = None
if isinstance(user, Contributor):
contrib = user
user = contrib.user
fullname = user.display_full_name(node=node)
ret = {
'id': str(user._primary_key),
'registered': user.is_registered,
'surname': user.family_name,
'fullname': fullname,
'shortname': fullname if len(fullname) < 50 else fullname[:23] + '...' + fullname[-23:],
'gravatar_url': gravatar(
user, use_ssl=True,
size=settings.PROFILE_IMAGE_MEDIUM
),
'active': user.is_active,
}
if node is not None:
if admin:
flags = {
'visible': False,
'permission': 'read',
}
else:
flags = {
'visible': contrib.visible if isinstance(contrib, Contributor) else node.contributor_set.filter(user=user, visible=True).exists(),
'permission': reduce_permissions(node.get_permissions(user)),
}
ret.update(flags)
if user.is_registered:
ret.update({
'url': user.url,
'absolute_url': user.absolute_url,
'display_absolute_url': user.display_absolute_url,
'date_registered': user.date_registered.strftime('%Y-%m-%d'),
})
if full:
# Add emails
if is_profile:
ret['emails'] = [
{
'address': each,
'primary': each.strip().lower() == user.username.strip().lower(),
'confirmed': True,
} for each in user.emails.values_list('address', flat=True)
] + [
{
'address': each,
'primary': each.strip().lower() == user.username.strip().lower(),
'confirmed': False
}
for each in user.get_unconfirmed_emails_exclude_external_identity()
]
if user.is_merged:
merger = user.merged_by
merged_by = {
'id': str(merger._primary_key),
'url': merger.url,
'absolute_url': merger.absolute_url
}
else:
merged_by = None
projects = Node.find_for_user(user, PROJECT_QUERY).get_roots()
ret.update({
'activity_points': user.get_activity_points(),
'gravatar_url': gravatar(
user, use_ssl=True,
size=settings.PROFILE_IMAGE_LARGE
),
'is_merged': user.is_merged,
'merged_by': merged_by,
})
if include_node_counts:
ret.update({
'number_projects': projects.count(),
'number_public_projects': projects.filter(is_public=True).count(),
})
return ret