Mercurial > public > src > rhodecode
diff pylons_app/controllers/admin/repos.py @ 412:ca54622e39a1
Added separate create repository views for non administrative users.
Fixed permission issue with private repos
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Sun, 01 Aug 2010 17:08:58 +0200 |
parents | 7fbf81447c6c |
children | 905c4f049c9e f5c1eec9f376 |
line wrap: on
line diff
--- a/pylons_app/controllers/admin/repos.py Sun Aug 01 13:39:09 2010 +0200 +++ b/pylons_app/controllers/admin/repos.py Sun Aug 01 17:08:58 2010 +0200 @@ -29,7 +29,8 @@ from pylons.controllers.util import abort, redirect from pylons.i18n.translation import _ from pylons_app.lib import helpers as h -from pylons_app.lib.auth import LoginRequired, HasPermissionAllDecorator +from pylons_app.lib.auth import LoginRequired, HasPermissionAllDecorator, \ + HasPermissionAnyDecorator from pylons_app.lib.base import BaseController, render from pylons_app.lib.utils import invalidate_cache from pylons_app.model.db import User @@ -49,12 +50,13 @@ # map.resource('repo', 'repos') @LoginRequired() - @HasPermissionAllDecorator('hg.admin') + @HasPermissionAnyDecorator('hg.admin', 'repository.create') def __before__(self): c.admin_user = session.get('admin_user') c.admin_username = session.get('admin_username') super(ReposController, self).__before__() - + + @HasPermissionAllDecorator('hg.admin') def index(self, format='html'): """GET /repos: All items in the collection""" # url('repos') @@ -62,6 +64,7 @@ c.repos_list = sorted(cached_repo_list, key=itemgetter('name_sort')) return render('admin/repos/repos.html') + @HasPermissionAnyDecorator('hg.admin', 'repository.create') def create(self): """POST /repos: Create a new item""" # url('repos') @@ -77,8 +80,14 @@ except formencode.Invalid as errors: c.new_repo = errors.value['repo_name'] + + if request.POST.get('user_created'): + r = render('admin/repos/repo_add_create_repository.html') + else: + r = render('admin/repos/repo_add.html') + return htmlfill.render( - render('admin/repos/repo_add.html'), + r, defaults=errors.value, errors=errors.error_dict or {}, prefix_error=False, @@ -89,16 +98,19 @@ msg = _('error occured during creation of repository %s') \ % form_result.get('repo_name') h.flash(msg, category='error') - - return redirect('repos') - + if request.POST.get('user_created'): + return redirect(url('hg_home')) + return redirect(url('repos')) + + @HasPermissionAllDecorator('hg.admin') def new(self, format='html'): """GET /repos/new: Form to create a new item""" new_repo = request.GET.get('repo', '') c.new_repo = h.repo_name_slug(new_repo) return render('admin/repos/repo_add.html') - + + @HasPermissionAllDecorator('hg.admin') def update(self, repo_name): """PUT /repos/repo_name: Update an existing item""" # Forms posted to this method should contain a hidden field: @@ -136,6 +148,7 @@ return redirect(url('edit_repo', repo_name=changed_name)) + @HasPermissionAllDecorator('hg.admin') def delete(self, repo_name): """DELETE /repos/repo_name: Delete an existing item""" # Forms posted to this method should contain a hidden field: @@ -164,7 +177,8 @@ category='error') return redirect(url('repos')) - + + @HasPermissionAllDecorator('hg.admin') def delete_perm_user(self, repo_name): """ DELETE an existing repository permission user @@ -178,11 +192,13 @@ h.flash(_('An error occured during deletion of repository user'), category='error') raise HTTPInternalServerError() - + + @HasPermissionAllDecorator('hg.admin') def show(self, repo_name, format='html'): """GET /repos/repo_name: Show a specific item""" # url('repo', repo_name=ID) - + + @HasPermissionAllDecorator('hg.admin') def edit(self, repo_name, format='html'): """GET /repos/repo_name/edit: Form to edit an existing item""" # url('edit_repo', repo_name=ID)