@@ -120,92 +120,94 @@ def fill_data(user):
user.is_admin = dbuser.admin
user.name = dbuser.name
user.lastname = dbuser.lastname
user.email = dbuser.email
else:
user.is_authenticated = False
meta.Session.remove()
from pprint import pprint
pprint(user.permissions)
return user
def fill_perms(user):
"""
Fills user permission attribute with permissions taken from database
@param user:
sa = meta.Session
user.permissions['repositories'] = {}
user.permissions['global'] = set()
#===========================================================================
# fetch default permissions
default_perms = sa.query(RepoToPerm, UserToPerm, Repository, Permission)\
.outerjoin((UserToPerm, RepoToPerm.user_id == UserToPerm.user_id))\
default_perms = sa.query(RepoToPerm, Repository, Permission)\
.join((Repository, RepoToPerm.repository_id == Repository.repo_id))\
.join((Permission, RepoToPerm.permission_id == Permission.permission_id))\
.filter(RepoToPerm.user_id == sa.query(User).filter(User.username ==
'default').one().user_id).all()
.filter(RepoToPerm.user == sa.query(User).filter(User.username ==
'default').scalar()).all()
if user.is_admin:
#=======================================================================
# #admin have all rights set to admin
# #admin have all default rights set to admin
user.permissions['global'].add('hg.admin')
for perm in default_perms:
p = 'repository.admin'
user.permissions['repositories'][perm.RepoToPerm.repository.repo_name] = p
# set default permissions
#default global
user.permissions['global'].add(perm.UserToPerm.permission.permission_name)
default_global_perms = sa.query(UserToPerm)\
.filter(UserToPerm.user == sa.query(User).filter(User.username ==
'default').one())
for perm in default_global_perms:
user.permissions['global'].add(perm.permission.permission_name)
#default repositories
if perm.Repository.private and not perm.Repository.user_id == user.user_id:
#disable defaults for private repos,
p = 'repository.none'
elif perm.Repository.user_id == user.user_id:
#set admin if owner
p = perm.Permission.permission_name
# #overwrite default with user permissions if any
user_perms = sa.query(RepoToPerm, UserToPerm, Permission, Repository)\
user_perms = sa.query(RepoToPerm, Permission, Repository)\
.filter(RepoToPerm.user_id == user.user_id).all()
for perm in user_perms:
if perm.Repository.user_id == user.user_id:#set admin if owner
def get_user(session):
Gets user from session, and wraps permissions into user
@param session:
user = session.get('hg_app_user', AuthUser())
if user.is_authenticated:
user = fill_data(user)
user = fill_perms(user)
session['hg_app_user'] = user
session.save()
Status change: