More robust permissions verification

remotes/origin/enhancement/email-actions
Jesús Espino 2014-08-20 09:28:32 +02:00
parent c956eeaee3
commit 553011bca0
1 changed files with 17 additions and 7 deletions

View File

@ -61,20 +61,30 @@ def get_user_project_permissions(user, project):
if user.is_superuser:
owner_permissions = list(map(lambda perm: perm[0], OWNERS_PERMISSIONS))
members_permissions = list(map(lambda perm: perm[0], MEMBERS_PERMISSIONS))
anon_permissions = list(map(lambda perm: perm[0], ANON_PERMISSIONS))
public_permissions = list(map(lambda perm: perm[0], USER_PERMISSIONS))
return set(owner_permissions + members_permissions + public_permissions + anon_permissions)
anon_permissions = list(map(lambda perm: perm[0], ANON_PERMISSIONS))
elif project.owner == user:
owner_permissions = list(map(lambda perm: perm[0], OWNERS_PERMISSIONS))
members_permissions = list(map(lambda perm: perm[0], MEMBERS_PERMISSIONS))
return set(project.anon_permissions + project.public_permissions + members_permissions + owner_permissions)
public_permissions = project.public_permissions if project.public_permissions is not None else []
anon_permissions = project.anon_permissions if project.anon_permissions is not None else []
elif membership:
if membership.is_owner:
owner_permissions = list(map(lambda perm: perm[0], OWNERS_PERMISSIONS))
return set(project.anon_permissions + project.public_permissions + _get_membership_permissions(membership) + owner_permissions)
else:
return set(project.anon_permissions + project.public_permissions + _get_membership_permissions(membership))
owner_permissions = []
members_permissions = _get_membership_permissions(membership)
public_permissions = project.public_permissions if project.public_permissions is not None else []
anon_permissions = project.anon_permissions if project.anon_permissions is not None else []
elif user.is_authenticated():
return set(project.anon_permissions + project.public_permissions)
owner_permissions = []
members_permissions = []
public_permissions = project.public_permissions if project.public_permissions is not None else []
anon_permissions = project.anon_permissions if project.anon_permissions is not None else []
else:
return set(project.anon_permissions)
owner_permissions = []
members_permissions = []
public_permissions = []
anon_permissions = project.anon_permissions if project.anon_permissions is not None else []
return set(owner_permissions + members_permissions + public_permissions + anon_permissions)