Mercurial > public > src > rhodecode
diff pylons_app/controllers/settings.py @ 578:a08f610e545e
Implemented server side forks
added ability to pass session to user/repo models
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Fri, 01 Oct 2010 00:16:09 +0200 |
parents | 87d80c84df09 |
children | 48be953851fc |
line wrap: on
line diff
--- a/pylons_app/controllers/settings.py Thu Sep 30 18:35:03 2010 +0200 +++ b/pylons_app/controllers/settings.py Fri Oct 01 00:16:09 2010 +0200 @@ -29,7 +29,7 @@ from pylons_app.lib.auth import LoginRequired, HasRepoPermissionAllDecorator from pylons_app.lib.base import BaseController, render from pylons_app.lib.utils import invalidate_cache -from pylons_app.model.forms import RepoSettingsForm +from pylons_app.model.forms import RepoSettingsForm, RepoForkForm from pylons_app.model.repo_model import RepoModel import formencode import logging @@ -140,5 +140,33 @@ ' in order to rescan repositories') % repo_name, category='error') - return redirect(url('hg_home')) + return redirect(url('hg_home')) + return render('settings/repo_fork.html') + + + + def fork_create(self, repo_name): + repo_model = RepoModel() + c.repo_info = repo_model.get(repo_name) + _form = RepoForkForm()() + form_result = {} + try: + form_result = _form.to_python(dict(request.POST)) + form_result.update({'repo_name':repo_name}) + repo_model.create_fork(form_result, c.hg_app_user) + h.flash(_('fork %s repository as %s task added') \ + % (repo_name, form_result['fork_name']), + category='success') + + except formencode.Invalid as errors: + c.new_repo = errors.value['fork_name'] + r = render('settings/repo_fork.html') + + return htmlfill.render( + r, + defaults=errors.value, + errors=errors.error_dict or {}, + prefix_error=False, + encoding="UTF-8") + return redirect(url('hg_home'))