comparison pylons_app/lib/auth.py @ 401:5cd6616b8673

routes python 2.5 compatible added my account settings, some changes to routes mappers for settings to more custom ones
author Marcin Kuzminski <marcin@python-works.com>
date Wed, 28 Jul 2010 01:44:39 +0200
parents a26f48ad7a8a
children bd8b25ad058d
comparison
equal deleted inserted replaced
399:5df93e22eec0 401:5cd6616b8673
102 102
103 config['available_permissions'] = [x.permission_name for x in all_perms] 103 config['available_permissions'] = [x.permission_name for x in all_perms]
104 104
105 def set_base_path(config): 105 def set_base_path(config):
106 config['base_path'] = config['pylons.app_globals'].base_path 106 config['base_path'] = config['pylons.app_globals'].base_path
107 107
108 def fill_data(user):
109 """
110 Fills user data with those from database
111 @param user:
112 """
113 sa = meta.Session
114 dbuser = sa.query(User).get(user.user_id)
115
116 user.username = dbuser.username
117 user.is_admin = dbuser.admin
118 user.name = dbuser.name
119 user.lastname = dbuser.lastname
120
121 meta.Session.remove()
122 return user
123
108 def fill_perms(user): 124 def fill_perms(user):
109 """ 125 """
110 Fills user permission attribute with permissions taken from database 126 Fills user permission attribute with permissions taken from database
111 @param user: 127 @param user:
112 """ 128 """
113 129
114 sa = meta.Session 130 sa = meta.Session
115 user.permissions['repositories'] = {} 131 user.permissions['repositories'] = {}
132 user.permissions['global'] = set()
116 133
117 #first fetch default permissions 134 #first fetch default permissions
118 default_perms = sa.query(Repo2Perm, Repository, Permission)\ 135 default_perms = sa.query(Repo2Perm, Repository, Permission)\
119 .join((Repository, Repo2Perm.repository_id == Repository.repo_id))\ 136 .join((Repository, Repo2Perm.repository_id == Repository.repo_id))\
120 .join((Permission, Repo2Perm.permission_id == Permission.permission_id))\ 137 .join((Permission, Repo2Perm.permission_id == Permission.permission_id))\
121 .filter(Repo2Perm.user_id == sa.query(User).filter(User.username == 138 .filter(Repo2Perm.user_id == sa.query(User).filter(User.username ==
122 'default').one().user_id).all() 139 'default').one().user_id).all()
123 140
124 if user.is_admin: 141 if user.is_admin:
125 user.permissions['global'] = set(['hg.admin']) 142 user.permissions['global'].add('hg.admin')
126 #admin have all rights full 143 #admin have all rights full
127 for perm in default_perms: 144 for perm in default_perms:
128 p = 'repository.admin' 145 p = 'repository.admin'
129 user.permissions['repositories'][perm.Repo2Perm.repository.repo_name] = p 146 user.permissions['repositories'][perm.Repo2Perm.repository.repo_name] = p
130 147
131 else: 148 else:
132 user.permissions['global'] = set() 149 user.permissions['global'].add('')
133 for perm in default_perms: 150 for perm in default_perms:
134 if perm.Repository.private: 151 if perm.Repository.private:
135 #disable defaults for private repos, 152 #disable defaults for private repos,
136 p = 'repository.none' 153 p = 'repository.none'
137 elif perm.Repository.user_id == user.user_id: 154 elif perm.Repository.user_id == user.user_id:
162 """ 179 """
163 Gets user from session, and wraps permissions into user 180 Gets user from session, and wraps permissions into user
164 @param session: 181 @param session:
165 """ 182 """
166 user = session.get('hg_app_user', AuthUser()) 183 user = session.get('hg_app_user', AuthUser())
167
168 if user.is_authenticated: 184 if user.is_authenticated:
185 user = fill_data(user)
169 user = fill_perms(user) 186 user = fill_perms(user)
170 session['hg_app_user'] = user 187 session['hg_app_user'] = user
171 session.save() 188 session.save()
172 return user 189 return user
173 190