comparison pylons_app/lib/auth.py @ 399:f5c1eec9f376

rename repo2perm into repo_to_perm added UserToPerm models for user global permissions
author Marcin Kuzminski <marcin@python-works.com>
date Sun, 08 Aug 2010 01:27:14 +0200
parents e0ef325cbdea
children a10bdd0b05a7
comparison
equal deleted inserted replaced
398:8c50b164fb58 399:f5c1eec9f376
25 from beaker.cache import cache_region 25 from beaker.cache import cache_region
26 from pylons import config, session, url, request 26 from pylons import config, session, url, request
27 from pylons.controllers.util import abort, redirect 27 from pylons.controllers.util import abort, redirect
28 from pylons_app.lib.utils import get_repo_slug 28 from pylons_app.lib.utils import get_repo_slug
29 from pylons_app.model import meta 29 from pylons_app.model import meta
30 from pylons_app.model.db import User, Repo2Perm, Repository, Permission 30 from pylons_app.model.db import User, RepoToPerm, Repository, Permission
31 from sqlalchemy.exc import OperationalError 31 from sqlalchemy.exc import OperationalError
32 from sqlalchemy.orm.exc import NoResultFound, MultipleResultsFound 32 from sqlalchemy.orm.exc import NoResultFound, MultipleResultsFound
33 import crypt 33 import crypt
34 from decorator import decorator 34 from decorator import decorator
35 import logging 35 import logging
132 sa = meta.Session 132 sa = meta.Session
133 user.permissions['repositories'] = {} 133 user.permissions['repositories'] = {}
134 user.permissions['global'] = set() 134 user.permissions['global'] = set()
135 135
136 #first fetch default permissions 136 #first fetch default permissions
137 default_perms = sa.query(Repo2Perm, Repository, Permission)\ 137 default_perms = sa.query(RepoToPerm, Repository, Permission)\
138 .join((Repository, Repo2Perm.repository_id == Repository.repo_id))\ 138 .join((Repository, RepoToPerm.repository_id == Repository.repo_id))\
139 .join((Permission, Repo2Perm.permission_id == Permission.permission_id))\ 139 .join((Permission, RepoToPerm.permission_id == Permission.permission_id))\
140 .filter(Repo2Perm.user_id == sa.query(User).filter(User.username == 140 .filter(RepoToPerm.user_id == sa.query(User).filter(User.username ==
141 'default').one().user_id).all() 141 'default').one().user_id).all()
142 142
143 if user.is_admin: 143 if user.is_admin:
144 user.permissions['global'].add('hg.admin') 144 user.permissions['global'].add('hg.admin')
145 #admin have all rights set to admin 145 #admin have all rights set to admin
146 for perm in default_perms: 146 for perm in default_perms:
147 p = 'repository.admin' 147 p = 'repository.admin'
148 user.permissions['repositories'][perm.Repo2Perm.repository.repo_name] = p 148 user.permissions['repositories'][perm.RepoToPerm.repository.repo_name] = p
149 149
150 else: 150 else:
151 user.permissions['global'].add('repository.create') 151 user.permissions['global'].add('repository.create')
152 for perm in default_perms: 152 for perm in default_perms:
153 if perm.Repository.private and not perm.Repository.user_id == user.user_id: 153 if perm.Repository.private and not perm.Repository.user_id == user.user_id:
157 #set admin if owner 157 #set admin if owner
158 p = 'repository.admin' 158 p = 'repository.admin'
159 else: 159 else:
160 p = perm.Permission.permission_name 160 p = perm.Permission.permission_name
161 161
162 user.permissions['repositories'][perm.Repo2Perm.repository.repo_name] = p 162 user.permissions['repositories'][perm.RepoToPerm.repository.repo_name] = p
163 163
164 164
165 user_perms = sa.query(Repo2Perm, Permission, Repository)\ 165 user_perms = sa.query(RepoToPerm, Permission, Repository)\
166 .join((Repository, Repo2Perm.repository_id == Repository.repo_id))\ 166 .join((Repository, RepoToPerm.repository_id == Repository.repo_id))\
167 .join((Permission, Repo2Perm.permission_id == Permission.permission_id))\ 167 .join((Permission, RepoToPerm.permission_id == Permission.permission_id))\
168 .filter(Repo2Perm.user_id == user.user_id).all() 168 .filter(RepoToPerm.user_id == user.user_id).all()
169 #overwrite userpermissions with defaults 169 #overwrite userpermissions with defaults
170 for perm in user_perms: 170 for perm in user_perms:
171 #set write if owner 171 #set write if owner
172 if perm.Repository.user_id == user.user_id: 172 if perm.Repository.user_id == user.user_id:
173 p = 'repository.write' 173 p = 'repository.write'
174 else: 174 else:
175 p = perm.Permission.permission_name 175 p = perm.Permission.permission_name
176 user.permissions['repositories'][perm.Repo2Perm.repository.repo_name] = p 176 user.permissions['repositories'][perm.RepoToPerm.repository.repo_name] = p
177 meta.Session.remove() 177 meta.Session.remove()
178 return user 178 return user
179 179
180 def get_user(session): 180 def get_user(session):
181 """ 181 """