comparison pylons_app/controllers/admin/repos.py @ 376:7fbf81447c6c

Fixes #18, removing user, who owns some repositories
author Marcin Kuzminski <marcin@python-works.com>
date Fri, 30 Jul 2010 22:12:06 +0200
parents 5cd6616b8673
children ca54622e39a1
comparison
equal deleted inserted replaced
375:3e55d9981c0e 376:7fbf81447c6c
22 admin controller for pylons 22 admin controller for pylons
23 @author: marcink 23 @author: marcink
24 """ 24 """
25 from formencode import htmlfill 25 from formencode import htmlfill
26 from operator import itemgetter 26 from operator import itemgetter
27 from paste.httpexceptions import HTTPInternalServerError
27 from pylons import request, response, session, tmpl_context as c, url 28 from pylons import request, response, session, tmpl_context as c, url
28 from pylons.controllers.util import abort, redirect 29 from pylons.controllers.util import abort, redirect
29 from pylons.i18n.translation import _ 30 from pylons.i18n.translation import _
30 from pylons_app.lib import helpers as h 31 from pylons_app.lib import helpers as h
31 from pylons_app.lib.auth import LoginRequired, HasPermissionAllDecorator 32 from pylons_app.lib.auth import LoginRequired, HasPermissionAllDecorator
32 from pylons_app.lib.base import BaseController, render 33 from pylons_app.lib.base import BaseController, render
33 from pylons_app.lib.utils import invalidate_cache 34 from pylons_app.lib.utils import invalidate_cache
35 from pylons_app.model.db import User
34 from pylons_app.model.forms import RepoForm 36 from pylons_app.model.forms import RepoForm
35 from pylons_app.model.hg_model import HgModel 37 from pylons_app.model.hg_model import HgModel
36 from pylons_app.model.repo_model import RepoModel 38 from pylons_app.model.repo_model import RepoModel
37 import formencode 39 import formencode
38 import logging 40 import logging
39 import traceback 41 import traceback
40 from paste.httpexceptions import HTTPInternalServerError
41 42
42 log = logging.getLogger(__name__) 43 log = logging.getLogger(__name__)
43 44
44 class ReposController(BaseController): 45 class ReposController(BaseController):
45 """REST Controller styled on the Atom Publishing Protocol""" 46 """REST Controller styled on the Atom Publishing Protocol"""
194 ' in order to rescan repositories') % repo_name, 195 ' in order to rescan repositories') % repo_name,
195 category='error') 196 category='error')
196 197
197 return redirect(url('repos')) 198 return redirect(url('repos'))
198 defaults = c.repo_info.__dict__ 199 defaults = c.repo_info.__dict__
199 defaults.update({'user':c.repo_info.user.username}) 200 if c.repo_info.user:
201 defaults.update({'user':c.repo_info.user.username})
202 else:
203 replacement_user = self.sa.query(User)\
204 .filter(User.admin == True).first().username
205 defaults.update({'user':replacement_user})
206
200 c.users_array = repo_model.get_users_js() 207 c.users_array = repo_model.get_users_js()
201 208
202 for p in c.repo_info.repo2perm: 209 for p in c.repo_info.repo2perm:
203 defaults.update({'perm_%s' % p.user.username: 210 defaults.update({'perm_%s' % p.user.username:
204 p.permission.permission_name}) 211 p.permission.permission_name})